Compare commits

...

2 commits

Author SHA1 Message Date
0afed893a6 whoops
now produces correct fractal but iterations outside are
sometimes wrong
probably range errrs in intermediate calc
2023-01-22 12:57:52 -08:00
8af3721308 tweaks 2023-01-22 12:47:24 -08:00

View file

@ -397,7 +397,7 @@ neg2:
positive: positive:
inc arg + 2 ; 5 cyc inc arg + 2 ; 5 cyc
beq next ; 2 cyc bne next ; 2 cyc
inc arg + 3 ; 5 cyc inc arg + 3 ; 5 cyc
zero: zero:
@ -436,11 +436,16 @@ keep_going:
.macro quick_exit arg .macro quick_exit arg
.local keep_going .local keep_going
.local keep_going2
lda arg + 1 lda arg + 1
cmp #(4 << 4) cmp #(4 << 4)
bmi keep_going bmi keep_going
rts rts
keep_going: keep_going:
cmp #(256 - (4 << 4))
bpl keep_going2
rts
keep_going2:
.endmacro .endmacro
; 4.12: (-8 .. +7.9) ; 4.12: (-8 .. +7.9)
@ -452,18 +457,19 @@ keep_going:
; zy = zx_zy + zx_zy + cy ; zy = zx_zy + zx_zy + cy
add16 zy, zx_zy, zx_zy add16 zy, zx_zy, zx_zy
add16 zy, zy, cy add16 zy, zy, cy
quick_exit zy
; zx_2 = zx * zx ; zx_2 = zx * zx
imul16_round zx_2, zx, zx, 4 imul16_round zx_2, zx, zx, 4
quick_exit dist quick_exit zx_2
; zy_2 = zy * zy ; zy_2 = zy * zy
imul16_round zy_2, zy, zy, 4 imul16_round zy_2, zy, zy, 4
quick_exit dist quick_exit zy_2
; zx_zy = zx * zy ; zx_zy = zx * zy
imul16_round zx_zy, zx, zy, 4 imul16_round zx_zy, zx, zy, 4
quick_exit dist quick_exit zx_zy
; dist = zx_2 + zy_2 ; dist = zx_2 + zy_2
add16 dist, zx_2, zy_2 add16 dist, zx_2, zy_2