mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-20 02:32:36 +00:00
Now works in 4 quadrants.
This commit is contained in:
parent
c3cff0dff1
commit
13652f61f2
@ -1,16 +1,27 @@
|
||||
// Find atan2(x, y) using the CORDIC method
|
||||
// See http://bsvi.ru/uploads/CORDIC--_10EBA/cordic.pdf
|
||||
|
||||
import "font-hex"
|
||||
import "c64"
|
||||
|
||||
const byte* CHARSET = 0x2000;
|
||||
const byte* SCREEN = 0x2800;
|
||||
|
||||
void main() {
|
||||
byte* screen = 0x0400;
|
||||
for(signed byte y: 0..24) {
|
||||
for(signed byte x: 0..39) {
|
||||
init_font_hex(CHARSET);
|
||||
*D018 = toD018(SCREEN, CHARSET);
|
||||
|
||||
byte* screen = SCREEN;
|
||||
for(signed byte y: -12..12) {
|
||||
for(signed byte x: -19..20) {
|
||||
byte angle = atan2(x, y);
|
||||
screen[x] = angle;
|
||||
*screen++ = angle;
|
||||
}
|
||||
screen+=40;
|
||||
}
|
||||
|
||||
byte* col00 = COLS+12*40+19;
|
||||
while(true) (*col00)++;
|
||||
|
||||
}
|
||||
|
||||
// The number of iterations performed during CORDIC atan2 calculation
|
||||
@ -21,32 +32,36 @@ byte* CORDIC_ATAN2_ANGLES = 0x1000;
|
||||
|
||||
// Populate cordic angles table
|
||||
kickasm(pc CORDIC_ATAN2_ANGLES) {{
|
||||
.fill CORDIC_ITERATIONS, 256*atan(1/pow(2,i))/PI/2
|
||||
.fill CORDIC_ITERATIONS, 2*256*atan(1/pow(2,i))/PI/2
|
||||
}}
|
||||
|
||||
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
|
||||
// Finding the angle requires a binary search using CORDIC_ITERATIONS
|
||||
// Returns the angle in hex-degrees (0=0, 128=PI, 256=2*PI)
|
||||
byte atan2(signed byte x, signed byte y) {
|
||||
signed byte yi = (y>0)?y:-y;
|
||||
signed byte xi = (x>0)?x:-x;
|
||||
byte angle = 0;
|
||||
for( byte i: 0..CORDIC_ITERATIONS) {
|
||||
if(y==0) {
|
||||
if(yi==0) {
|
||||
// We found the correct angle!
|
||||
break;
|
||||
}
|
||||
signed byte xd = x>>i;
|
||||
signed byte yd = y>>i;
|
||||
if(y>0) {
|
||||
x += yd;
|
||||
y -= xd;
|
||||
signed byte xd = xi>>i;
|
||||
signed byte yd = yi>>i;
|
||||
if(yi>0) {
|
||||
xi += yd;
|
||||
yi -= xd;
|
||||
angle += CORDIC_ATAN2_ANGLES[i];
|
||||
} else {
|
||||
x -= yd;
|
||||
y += xd;
|
||||
xi -= yd;
|
||||
yi += xd;
|
||||
angle -= CORDIC_ATAN2_ANGLES[i];
|
||||
}
|
||||
|
||||
}
|
||||
angle /=2;
|
||||
if(x<0) angle = 128-angle;
|
||||
if(y<0) angle = -angle;
|
||||
// Iterations complete - return estimated angle
|
||||
return angle;
|
||||
}
|
@ -3,69 +3,126 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label D018 = $d018
|
||||
// Color Ram
|
||||
.label COLS = $d800
|
||||
.label CHARSET = $2000
|
||||
.label SCREEN = $2800
|
||||
// The number of iterations performed during CORDIC atan2 calculation
|
||||
.const CORDIC_ITERATIONS = 8
|
||||
// Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
|
||||
.label CORDIC_ATAN2_ANGLES = $1000
|
||||
// Populate cordic angles table
|
||||
main: {
|
||||
.label x = 5
|
||||
.label screen = 3
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
lda #<$400
|
||||
jsr init_font_hex
|
||||
lda #toD0181_return
|
||||
sta D018
|
||||
lda #<SCREEN
|
||||
sta screen
|
||||
lda #>$400
|
||||
lda #>SCREEN
|
||||
sta screen+1
|
||||
lda #0
|
||||
lda #-$c
|
||||
sta y
|
||||
b1:
|
||||
lda #0
|
||||
lda #-$13
|
||||
sta x
|
||||
b2:
|
||||
lda x
|
||||
sta atan2.x
|
||||
lda y
|
||||
sta atan2.y
|
||||
jsr atan2
|
||||
txa
|
||||
ldy x
|
||||
ldy #0
|
||||
sta (screen),y
|
||||
inc x
|
||||
lda #$28
|
||||
cmp x
|
||||
bne b2
|
||||
clc
|
||||
adc screen
|
||||
sta screen
|
||||
bcc !+
|
||||
inc screen
|
||||
bne !+
|
||||
inc screen+1
|
||||
!:
|
||||
inc x
|
||||
lda #$15
|
||||
cmp x
|
||||
bne b2
|
||||
inc y
|
||||
lda #$19
|
||||
lda #$d
|
||||
cmp y
|
||||
bne b1
|
||||
rts
|
||||
b4:
|
||||
lda COLS+$c*$28+$13
|
||||
clc
|
||||
adc #1
|
||||
sta COLS+$c*$28+$13
|
||||
jmp b4
|
||||
}
|
||||
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
|
||||
// Finding the angle requires a binary search using CORDIC_ITERATIONS
|
||||
// Returns the angle in hex-degrees (0=0, 128=PI, 256=2*PI)
|
||||
// atan2(signed byte zeropage(7) x, signed byte zeropage(6) y)
|
||||
// atan2(signed byte zeropage(3) x, signed byte zeropage(2) y)
|
||||
atan2: {
|
||||
.label x = 7
|
||||
.label y = 6
|
||||
.label xd = 9
|
||||
.label i = 8
|
||||
ldx #0
|
||||
txa
|
||||
sta i
|
||||
b1:
|
||||
.label _7 = 6
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label xi = 6
|
||||
.label xd = $12
|
||||
.label angle = 8
|
||||
.label i = 7
|
||||
lda y
|
||||
cmp #0
|
||||
bne b2
|
||||
beq !+
|
||||
bmi !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
!:
|
||||
lda y
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
tax
|
||||
b3:
|
||||
rts
|
||||
b2:
|
||||
lda x
|
||||
cmp #0
|
||||
beq !+
|
||||
bmi !b4+
|
||||
jmp b4
|
||||
!b4:
|
||||
!:
|
||||
lda x
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
sta _7
|
||||
b6:
|
||||
lda #0
|
||||
sta angle
|
||||
sta i
|
||||
b10:
|
||||
txa
|
||||
cmp #0
|
||||
bne b11
|
||||
b12:
|
||||
lda angle
|
||||
lsr
|
||||
tax
|
||||
lda x
|
||||
cmp #0
|
||||
bpl b7
|
||||
txa
|
||||
eor #$ff
|
||||
clc
|
||||
adc #$80+1
|
||||
tax
|
||||
b7:
|
||||
lda y
|
||||
cmp #0
|
||||
bpl b8
|
||||
dex
|
||||
txa
|
||||
eor #$ff
|
||||
tax
|
||||
b8:
|
||||
rts
|
||||
b11:
|
||||
lda xi
|
||||
ldy i
|
||||
cpy #0
|
||||
beq !e+
|
||||
@ -76,8 +133,8 @@ atan2: {
|
||||
bne !l-
|
||||
!e:
|
||||
sta xd
|
||||
lda y
|
||||
ldy i
|
||||
txa
|
||||
cpy #0
|
||||
beq !e+
|
||||
!l:
|
||||
@ -87,47 +144,146 @@ atan2: {
|
||||
bne !l-
|
||||
!e:
|
||||
tay
|
||||
lda y
|
||||
txa
|
||||
cmp #0
|
||||
beq !+
|
||||
bpl b4
|
||||
bpl b13
|
||||
!:
|
||||
tya
|
||||
eor #$ff
|
||||
sec
|
||||
adc x
|
||||
sta x
|
||||
lda y
|
||||
adc xi
|
||||
sta xi
|
||||
txa
|
||||
clc
|
||||
adc xd
|
||||
sta y
|
||||
txa
|
||||
ldx i
|
||||
sec
|
||||
sbc CORDIC_ATAN2_ANGLES,x
|
||||
tax
|
||||
b5:
|
||||
lda angle
|
||||
ldy i
|
||||
sec
|
||||
sbc CORDIC_ATAN2_ANGLES,y
|
||||
sta angle
|
||||
b14:
|
||||
inc i
|
||||
lda #CORDIC_ITERATIONS+1
|
||||
cmp i
|
||||
beq b3
|
||||
jmp b1
|
||||
b4:
|
||||
beq b12
|
||||
jmp b10
|
||||
b13:
|
||||
tya
|
||||
clc
|
||||
adc x
|
||||
sta x
|
||||
lda y
|
||||
adc xi
|
||||
sta xi
|
||||
txa
|
||||
sec
|
||||
sbc xd
|
||||
sta y
|
||||
txa
|
||||
ldx i
|
||||
clc
|
||||
adc CORDIC_ATAN2_ANGLES,x
|
||||
tax
|
||||
jmp b5
|
||||
lda angle
|
||||
ldy i
|
||||
clc
|
||||
adc CORDIC_ATAN2_ANGLES,y
|
||||
sta angle
|
||||
jmp b14
|
||||
b4:
|
||||
lda x
|
||||
sta xi
|
||||
jmp b6
|
||||
b1:
|
||||
ldx y
|
||||
jmp b3
|
||||
}
|
||||
// Make charset from proto chars
|
||||
// init_font_hex(byte* zeropage($c) charset)
|
||||
init_font_hex: {
|
||||
.label _0 = $13
|
||||
.label idx = $11
|
||||
.label proto_lo = $e
|
||||
.label charset = $c
|
||||
.label c1 = $10
|
||||
.label proto_hi = 9
|
||||
.label c = $b
|
||||
lda #0
|
||||
sta c
|
||||
lda #<FONT_HEX_PROTO
|
||||
sta proto_hi
|
||||
lda #>FONT_HEX_PROTO
|
||||
sta proto_hi+1
|
||||
lda #<CHARSET
|
||||
sta charset
|
||||
lda #>CHARSET
|
||||
sta charset+1
|
||||
b1:
|
||||
lda #0
|
||||
sta c1
|
||||
lda #<FONT_HEX_PROTO
|
||||
sta proto_lo
|
||||
lda #>FONT_HEX_PROTO
|
||||
sta proto_lo+1
|
||||
b2:
|
||||
lda #0
|
||||
tay
|
||||
sta (charset),y
|
||||
lda #1
|
||||
sta idx
|
||||
ldx #0
|
||||
b3:
|
||||
txa
|
||||
tay
|
||||
lda (proto_hi),y
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
sta _0
|
||||
txa
|
||||
tay
|
||||
lda (proto_lo),y
|
||||
asl
|
||||
ora _0
|
||||
ldy idx
|
||||
sta (charset),y
|
||||
inc idx
|
||||
inx
|
||||
cpx #5
|
||||
bne b3
|
||||
lda #0
|
||||
ldy idx
|
||||
sta (charset),y
|
||||
iny
|
||||
sta (charset),y
|
||||
lda #5
|
||||
clc
|
||||
adc proto_lo
|
||||
sta proto_lo
|
||||
bcc !+
|
||||
inc proto_lo+1
|
||||
!:
|
||||
lda #8
|
||||
clc
|
||||
adc charset
|
||||
sta charset
|
||||
bcc !+
|
||||
inc charset+1
|
||||
!:
|
||||
inc c1
|
||||
lda #$10
|
||||
cmp c1
|
||||
bne b2
|
||||
lda #5
|
||||
clc
|
||||
adc proto_hi
|
||||
sta proto_hi
|
||||
bcc !+
|
||||
inc proto_hi+1
|
||||
!:
|
||||
inc c
|
||||
lda #$10
|
||||
cmp c
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
// Bit patterns for symbols 0-f (3x5 pixels) used in font hex
|
||||
FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
|
||||
.pc = CORDIC_ATAN2_ANGLES "CORDIC_ATAN2_ANGLES"
|
||||
.fill CORDIC_ITERATIONS, 256*atan(1/pow(2,i))/PI/2
|
||||
.fill CORDIC_ITERATIONS, 2*256*atan(1/pow(2,i))/PI/2
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
kickasm(location (const byte*) CORDIC_ATAN2_ANGLES#0) {{ .fill CORDIC_ITERATIONS, 256*atan(1/pow(2,i))/PI/2
|
||||
kickasm(location (const byte*) CORDIC_ATAN2_ANGLES#0) {{ .fill CORDIC_ITERATIONS, 2*256*atan(1/pow(2,i))/PI/2
|
||||
}}
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -13,67 +13,151 @@
|
||||
[4] phi()
|
||||
main: scope:[main] from @2
|
||||
[5] phi()
|
||||
[6] call init_font_hex
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main
|
||||
[7] phi()
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::toD0181
|
||||
[8] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@3
|
||||
[6] (byte*) main::screen#5 ← phi( main/(byte*) 1024 main::@3/(byte*) main::screen#1 )
|
||||
[6] (signed byte) main::y#4 ← phi( main/(signed byte) 0 main::@3/(signed byte) main::y#1 )
|
||||
main::@1: scope:[main] from main::@3 main::@5
|
||||
[9] (byte*) main::screen#4 ← phi( main::@5/(const byte*) SCREEN#0 main::@3/(byte*) main::screen#1 )
|
||||
[9] (signed byte) main::y#4 ← phi( main::@5/(signed byte) -$c main::@3/(signed byte) main::y#1 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@4
|
||||
[7] (signed byte) main::x#2 ← phi( main::@1/(signed byte) 0 main::@4/(signed byte) main::x#1 )
|
||||
[8] (signed byte) atan2::x#0 ← (signed byte) main::x#2
|
||||
[9] (signed byte) atan2::y#0 ← (signed byte) main::y#4
|
||||
[10] call atan2
|
||||
[11] (byte) atan2::return#0 ← (byte) atan2::return#1
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@2
|
||||
[12] (byte) main::angle#0 ← (byte) atan2::return#0
|
||||
[13] *((byte*) main::screen#5 + (signed byte) main::x#2) ← (byte) main::angle#0
|
||||
[14] (signed byte) main::x#1 ← ++ (signed byte) main::x#2
|
||||
[15] if((signed byte) main::x#1!=(signed byte) $28) goto main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@6
|
||||
[10] (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#4 main::@6/(byte*) main::screen#1 )
|
||||
[10] (signed byte) main::x#2 ← phi( main::@1/(signed byte) -$13 main::@6/(signed byte) main::x#1 )
|
||||
[11] (signed byte) atan2::x#0 ← (signed byte) main::x#2
|
||||
[12] (signed byte) atan2::y#0 ← (signed byte) main::y#4
|
||||
[13] call atan2
|
||||
[14] (byte) atan2::return#0 ← (byte) atan2::return#1
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@2
|
||||
[15] (byte) main::angle#0 ← (byte) atan2::return#0
|
||||
[16] *((byte*) main::screen#2) ← (byte) main::angle#0
|
||||
[17] (byte*) main::screen#1 ← ++ (byte*) main::screen#2
|
||||
[18] (signed byte) main::x#1 ← ++ (signed byte) main::x#2
|
||||
[19] if((signed byte) main::x#1!=(signed byte) $15) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@4
|
||||
[16] (byte*) main::screen#1 ← (byte*) main::screen#5 + (byte) $28
|
||||
[17] (signed byte) main::y#1 ← ++ (signed byte) main::y#4
|
||||
[18] if((signed byte) main::y#1!=(signed byte) $19) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
[19] return
|
||||
to:@return
|
||||
main::@3: scope:[main] from main::@6
|
||||
[20] (signed byte) main::y#1 ← ++ (signed byte) main::y#4
|
||||
[21] if((signed byte) main::y#1!=(signed byte) $d) goto main::@1
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
[22] *((const byte*) COLS#0+(word)(number) $c*(number) $28+(byte) $13) ← ++ *((const byte*) COLS#0+(word)(number) $c*(number) $28+(byte) $13)
|
||||
to:main::@4
|
||||
atan2: scope:[atan2] from main::@2
|
||||
[20] phi()
|
||||
to:atan2::@1
|
||||
atan2::@1: scope:[atan2] from atan2 atan2::@5
|
||||
[21] (byte) atan2::angle#4 ← phi( atan2/(byte) 0 atan2::@5/(byte) atan2::angle#7 )
|
||||
[21] (byte) atan2::i#2 ← phi( atan2/(byte) 0 atan2::@5/(byte) atan2::i#1 )
|
||||
[21] (signed byte) atan2::x#3 ← phi( atan2/(signed byte) atan2::x#0 atan2::@5/(signed byte) atan2::x#8 )
|
||||
[21] (signed byte) atan2::y#3 ← phi( atan2/(signed byte) atan2::y#0 atan2::@5/(signed byte) atan2::y#8 )
|
||||
[22] if((signed byte) atan2::y#3!=(signed byte) 0) goto atan2::@2
|
||||
[23] if((signed byte) atan2::y#0>(signed byte) 0) goto atan2::@1
|
||||
to:atan2::@2
|
||||
atan2::@2: scope:[atan2] from atan2
|
||||
[24] (signed byte~) atan2::$2 ← - (signed byte) atan2::y#0
|
||||
to:atan2::@3
|
||||
atan2::@3: scope:[atan2] from atan2::@1 atan2::@5
|
||||
[23] (byte) atan2::return#1 ← phi( atan2::@1/(byte) atan2::angle#4 atan2::@5/(byte) atan2::angle#7 )
|
||||
to:atan2::@return
|
||||
atan2::@return: scope:[atan2] from atan2::@3
|
||||
[24] return
|
||||
to:@return
|
||||
atan2::@2: scope:[atan2] from atan2::@1
|
||||
[25] (signed byte) atan2::xd#0 ← (signed byte) atan2::x#3 >> (byte) atan2::i#2
|
||||
[26] (signed byte) atan2::yd#0 ← (signed byte) atan2::y#3 >> (byte) atan2::i#2
|
||||
[27] if((signed byte) atan2::y#3>(signed byte) 0) goto atan2::@4
|
||||
atan2::@3: scope:[atan2] from atan2::@1 atan2::@2
|
||||
[25] (signed byte) atan2::yi#0 ← phi( atan2::@1/(signed byte~) atan2::yi#11 atan2::@2/(signed byte~) atan2::$2 )
|
||||
[26] if((signed byte) atan2::x#0>(signed byte) 0) goto atan2::@4
|
||||
to:atan2::@5
|
||||
atan2::@5: scope:[atan2] from atan2::@3
|
||||
[27] (signed byte~) atan2::$7 ← - (signed byte) atan2::x#0
|
||||
to:atan2::@6
|
||||
atan2::@6: scope:[atan2] from atan2::@2
|
||||
[28] (signed byte) atan2::x#2 ← (signed byte) atan2::x#3 - (signed byte) atan2::yd#0
|
||||
[29] (signed byte) atan2::y#2 ← (signed byte) atan2::y#3 + (signed byte) atan2::xd#0
|
||||
[30] (byte) atan2::angle#2 ← (byte) atan2::angle#4 - *((const byte*) CORDIC_ATAN2_ANGLES#0 + (byte) atan2::i#2)
|
||||
to:atan2::@5
|
||||
atan2::@5: scope:[atan2] from atan2::@4 atan2::@6
|
||||
[31] (signed byte) atan2::x#8 ← phi( atan2::@4/(signed byte) atan2::x#1 atan2::@6/(signed byte) atan2::x#2 )
|
||||
[31] (byte) atan2::angle#7 ← phi( atan2::@4/(byte) atan2::angle#1 atan2::@6/(byte) atan2::angle#2 )
|
||||
[31] (signed byte) atan2::y#8 ← phi( atan2::@4/(signed byte) atan2::y#1 atan2::@6/(signed byte) atan2::y#2 )
|
||||
[32] (byte) atan2::i#1 ← ++ (byte) atan2::i#2
|
||||
[33] if((byte) atan2::i#1==(const byte) CORDIC_ITERATIONS#0+(byte) 1) goto atan2::@3
|
||||
to:atan2::@1
|
||||
atan2::@4: scope:[atan2] from atan2::@2
|
||||
[34] (signed byte) atan2::x#1 ← (signed byte) atan2::x#3 + (signed byte) atan2::yd#0
|
||||
[35] (signed byte) atan2::y#1 ← (signed byte) atan2::y#3 - (signed byte) atan2::xd#0
|
||||
[36] (byte) atan2::angle#1 ← (byte) atan2::angle#4 + *((const byte*) CORDIC_ATAN2_ANGLES#0 + (byte) atan2::i#2)
|
||||
to:atan2::@5
|
||||
atan2::@6: scope:[atan2] from atan2::@4 atan2::@5
|
||||
[28] (signed byte) atan2::xi#0 ← phi( atan2::@4/(signed byte~) atan2::xi#8 atan2::@5/(signed byte~) atan2::$7 )
|
||||
to:atan2::@10
|
||||
atan2::@10: scope:[atan2] from atan2::@14 atan2::@6
|
||||
[29] (byte) atan2::angle#12 ← phi( atan2::@14/(byte) atan2::angle#13 atan2::@6/(byte) 0 )
|
||||
[29] (byte) atan2::i#2 ← phi( atan2::@14/(byte) atan2::i#1 atan2::@6/(byte) 0 )
|
||||
[29] (signed byte) atan2::xi#3 ← phi( atan2::@14/(signed byte) atan2::xi#7 atan2::@6/(signed byte) atan2::xi#0 )
|
||||
[29] (signed byte) atan2::yi#3 ← phi( atan2::@14/(signed byte) atan2::yi#7 atan2::@6/(signed byte) atan2::yi#0 )
|
||||
[30] if((signed byte) atan2::yi#3!=(signed byte) 0) goto atan2::@11
|
||||
to:atan2::@12
|
||||
atan2::@12: scope:[atan2] from atan2::@10 atan2::@14
|
||||
[31] (byte) atan2::angle#6 ← phi( atan2::@10/(byte) atan2::angle#12 atan2::@14/(byte) atan2::angle#13 )
|
||||
[32] (byte) atan2::angle#1 ← (byte) atan2::angle#6 >> (byte) 1
|
||||
[33] if((signed byte) atan2::x#0>=(signed byte) 0) goto atan2::@7
|
||||
to:atan2::@16
|
||||
atan2::@16: scope:[atan2] from atan2::@12
|
||||
[34] (byte) atan2::angle#4 ← (byte) $80 - (byte) atan2::angle#1
|
||||
to:atan2::@7
|
||||
atan2::@7: scope:[atan2] from atan2::@12 atan2::@16
|
||||
[35] (byte) atan2::angle#11 ← phi( atan2::@12/(byte) atan2::angle#1 atan2::@16/(byte) atan2::angle#4 )
|
||||
[36] if((signed byte) atan2::y#0>=(signed byte) 0) goto atan2::@8
|
||||
to:atan2::@9
|
||||
atan2::@9: scope:[atan2] from atan2::@7
|
||||
[37] (byte) atan2::angle#5 ← - (byte) atan2::angle#11
|
||||
to:atan2::@8
|
||||
atan2::@8: scope:[atan2] from atan2::@7 atan2::@9
|
||||
[38] (byte) atan2::return#1 ← phi( atan2::@9/(byte) atan2::angle#5 atan2::@7/(byte) atan2::angle#11 )
|
||||
to:atan2::@return
|
||||
atan2::@return: scope:[atan2] from atan2::@8
|
||||
[39] return
|
||||
to:@return
|
||||
atan2::@11: scope:[atan2] from atan2::@10
|
||||
[40] (signed byte) atan2::xd#0 ← (signed byte) atan2::xi#3 >> (byte) atan2::i#2
|
||||
[41] (signed byte) atan2::yd#0 ← (signed byte) atan2::yi#3 >> (byte) atan2::i#2
|
||||
[42] if((signed byte) atan2::yi#3>(signed byte) 0) goto atan2::@13
|
||||
to:atan2::@15
|
||||
atan2::@15: scope:[atan2] from atan2::@11
|
||||
[43] (signed byte) atan2::xi#2 ← (signed byte) atan2::xi#3 - (signed byte) atan2::yd#0
|
||||
[44] (signed byte) atan2::yi#2 ← (signed byte) atan2::yi#3 + (signed byte) atan2::xd#0
|
||||
[45] (byte) atan2::angle#3 ← (byte) atan2::angle#12 - *((const byte*) CORDIC_ATAN2_ANGLES#0 + (byte) atan2::i#2)
|
||||
to:atan2::@14
|
||||
atan2::@14: scope:[atan2] from atan2::@13 atan2::@15
|
||||
[46] (signed byte) atan2::xi#7 ← phi( atan2::@13/(signed byte) atan2::xi#1 atan2::@15/(signed byte) atan2::xi#2 )
|
||||
[46] (byte) atan2::angle#13 ← phi( atan2::@13/(byte) atan2::angle#2 atan2::@15/(byte) atan2::angle#3 )
|
||||
[46] (signed byte) atan2::yi#7 ← phi( atan2::@13/(signed byte) atan2::yi#1 atan2::@15/(signed byte) atan2::yi#2 )
|
||||
[47] (byte) atan2::i#1 ← ++ (byte) atan2::i#2
|
||||
[48] if((byte) atan2::i#1==(const byte) CORDIC_ITERATIONS#0+(byte) 1) goto atan2::@12
|
||||
to:atan2::@10
|
||||
atan2::@13: scope:[atan2] from atan2::@11
|
||||
[49] (signed byte) atan2::xi#1 ← (signed byte) atan2::xi#3 + (signed byte) atan2::yd#0
|
||||
[50] (signed byte) atan2::yi#1 ← (signed byte) atan2::yi#3 - (signed byte) atan2::xd#0
|
||||
[51] (byte) atan2::angle#2 ← (byte) atan2::angle#12 + *((const byte*) CORDIC_ATAN2_ANGLES#0 + (byte) atan2::i#2)
|
||||
to:atan2::@14
|
||||
atan2::@4: scope:[atan2] from atan2::@3
|
||||
[52] (signed byte~) atan2::xi#8 ← (signed byte) atan2::x#0
|
||||
to:atan2::@6
|
||||
atan2::@1: scope:[atan2] from atan2
|
||||
[53] (signed byte~) atan2::yi#11 ← (signed byte) atan2::y#0
|
||||
to:atan2::@3
|
||||
init_font_hex: scope:[init_font_hex] from main
|
||||
[54] phi()
|
||||
to:init_font_hex::@1
|
||||
init_font_hex::@1: scope:[init_font_hex] from init_font_hex init_font_hex::@5
|
||||
[55] (byte) init_font_hex::c#6 ← phi( init_font_hex/(byte) 0 init_font_hex::@5/(byte) init_font_hex::c#1 )
|
||||
[55] (byte*) init_font_hex::proto_hi#6 ← phi( init_font_hex/(const byte[]) FONT_HEX_PROTO#0 init_font_hex::@5/(byte*) init_font_hex::proto_hi#1 )
|
||||
[55] (byte*) init_font_hex::charset#5 ← phi( init_font_hex/(const byte*) CHARSET#0 init_font_hex::@5/(byte*) init_font_hex::charset#0 )
|
||||
to:init_font_hex::@2
|
||||
init_font_hex::@2: scope:[init_font_hex] from init_font_hex::@1 init_font_hex::@4
|
||||
[56] (byte) init_font_hex::c1#4 ← phi( init_font_hex::@1/(byte) 0 init_font_hex::@4/(byte) init_font_hex::c1#1 )
|
||||
[56] (byte*) init_font_hex::proto_lo#4 ← phi( init_font_hex::@1/(const byte[]) FONT_HEX_PROTO#0 init_font_hex::@4/(byte*) init_font_hex::proto_lo#1 )
|
||||
[56] (byte*) init_font_hex::charset#2 ← phi( init_font_hex::@1/(byte*) init_font_hex::charset#5 init_font_hex::@4/(byte*) init_font_hex::charset#0 )
|
||||
[57] *((byte*) init_font_hex::charset#2) ← (byte) 0
|
||||
to:init_font_hex::@3
|
||||
init_font_hex::@3: scope:[init_font_hex] from init_font_hex::@2 init_font_hex::@3
|
||||
[58] (byte) init_font_hex::idx#5 ← phi( init_font_hex::@2/(byte) 1 init_font_hex::@3/(byte) init_font_hex::idx#2 )
|
||||
[58] (byte) init_font_hex::i#2 ← phi( init_font_hex::@2/(byte) 0 init_font_hex::@3/(byte) init_font_hex::i#1 )
|
||||
[59] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4
|
||||
[60] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1
|
||||
[61] (byte~) init_font_hex::$2 ← (byte~) init_font_hex::$0 | (byte~) init_font_hex::$1
|
||||
[62] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#5) ← (byte~) init_font_hex::$2
|
||||
[63] (byte) init_font_hex::idx#2 ← ++ (byte) init_font_hex::idx#5
|
||||
[64] (byte) init_font_hex::i#1 ← ++ (byte) init_font_hex::i#2
|
||||
[65] if((byte) init_font_hex::i#1!=(byte) 5) goto init_font_hex::@3
|
||||
to:init_font_hex::@4
|
||||
init_font_hex::@4: scope:[init_font_hex] from init_font_hex::@3
|
||||
[66] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0
|
||||
[67] (byte) init_font_hex::idx#3 ← ++ (byte) init_font_hex::idx#2
|
||||
[68] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0
|
||||
[69] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5
|
||||
[70] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8
|
||||
[71] (byte) init_font_hex::c1#1 ← ++ (byte) init_font_hex::c1#4
|
||||
[72] if((byte) init_font_hex::c1#1!=(byte) $10) goto init_font_hex::@2
|
||||
to:init_font_hex::@5
|
||||
init_font_hex::@5: scope:[init_font_hex] from init_font_hex::@4
|
||||
[73] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5
|
||||
[74] (byte) init_font_hex::c#1 ← ++ (byte) init_font_hex::c#6
|
||||
[75] if((byte) init_font_hex::c#1!=(byte) $10) goto init_font_hex::@1
|
||||
to:init_font_hex::@return
|
||||
init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5
|
||||
[76] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,71 +2,166 @@
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) CHARSET
|
||||
(const byte*) CHARSET#0 CHARSET = (byte*) 8192
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = (byte*) 55296
|
||||
(byte*) CORDIC_ATAN2_ANGLES
|
||||
(const byte*) CORDIC_ATAN2_ANGLES#0 CORDIC_ATAN2_ANGLES = (byte*) 4096
|
||||
(byte) CORDIC_ITERATIONS
|
||||
(const byte) CORDIC_ITERATIONS#0 CORDIC_ITERATIONS = (byte) 8
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = (byte*) 53272
|
||||
(byte[]) FONT_HEX_PROTO
|
||||
(const byte[]) FONT_HEX_PROTO#0 FONT_HEX_PROTO = { (byte) 2, (byte) 5, (byte) 5, (byte) 5, (byte) 2, (byte) 6, (byte) 2, (byte) 2, (byte) 2, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 4, (byte) 7, (byte) 6, (byte) 1, (byte) 2, (byte) 1, (byte) 6, (byte) 5, (byte) 5, (byte) 7, (byte) 1, (byte) 1, (byte) 7, (byte) 4, (byte) 6, (byte) 1, (byte) 6, (byte) 3, (byte) 4, (byte) 6, (byte) 5, (byte) 2, (byte) 7, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 2, (byte) 5, (byte) 2, (byte) 2, (byte) 5, (byte) 3, (byte) 1, (byte) 1, (byte) 2, (byte) 5, (byte) 7, (byte) 5, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 5, (byte) 6, (byte) 2, (byte) 5, (byte) 4, (byte) 5, (byte) 2, (byte) 6, (byte) 5, (byte) 5, (byte) 5, (byte) 6, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 7, (byte) 7, (byte) 4, (byte) 6, (byte) 4, (byte) 4 }
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = (byte*) 10240
|
||||
(byte()) atan2((signed byte) atan2::x , (signed byte) atan2::y)
|
||||
(signed byte~) atan2::$2 reg byte x 4.0
|
||||
(signed byte~) atan2::$7 $7 zp ZP_BYTE:6 4.0
|
||||
(label) atan2::@1
|
||||
(label) atan2::@10
|
||||
(label) atan2::@11
|
||||
(label) atan2::@12
|
||||
(label) atan2::@13
|
||||
(label) atan2::@14
|
||||
(label) atan2::@15
|
||||
(label) atan2::@16
|
||||
(label) atan2::@2
|
||||
(label) atan2::@3
|
||||
(label) atan2::@4
|
||||
(label) atan2::@5
|
||||
(label) atan2::@6
|
||||
(label) atan2::@7
|
||||
(label) atan2::@8
|
||||
(label) atan2::@9
|
||||
(label) atan2::@return
|
||||
(byte) atan2::angle
|
||||
(byte) atan2::angle#1 reg byte x 2002.0
|
||||
(byte) atan2::angle#2 reg byte x 2002.0
|
||||
(byte) atan2::angle#4 reg byte x 444.8888888888889
|
||||
(byte) atan2::angle#7 reg byte x 1334.6666666666667
|
||||
(byte) atan2::angle#1 reg byte x 3.0
|
||||
(byte) atan2::angle#11 reg byte x 4.0
|
||||
(byte) atan2::angle#12 angle zp ZP_BYTE:8 444.8888888888889
|
||||
(byte) atan2::angle#13 angle zp ZP_BYTE:8 1334.6666666666667
|
||||
(byte) atan2::angle#2 angle zp ZP_BYTE:8 2002.0
|
||||
(byte) atan2::angle#3 angle zp ZP_BYTE:8 2002.0
|
||||
(byte) atan2::angle#4 reg byte x 4.0
|
||||
(byte) atan2::angle#5 reg byte x 4.0
|
||||
(byte) atan2::angle#6 angle zp ZP_BYTE:8 2004.0
|
||||
(byte) atan2::i
|
||||
(byte) atan2::i#1 i zp ZP_BYTE:8 1501.5
|
||||
(byte) atan2::i#2 i zp ZP_BYTE:8 500.50000000000006
|
||||
(byte) atan2::i#1 i zp ZP_BYTE:7 1501.5
|
||||
(byte) atan2::i#2 i zp ZP_BYTE:7 500.50000000000006
|
||||
(byte) atan2::return
|
||||
(byte) atan2::return#0 reg byte a 202.0
|
||||
(byte) atan2::return#1 reg byte x 701.0
|
||||
(byte) atan2::return#1 reg byte x 34.99999999999999
|
||||
(signed byte) atan2::x
|
||||
(signed byte) atan2::x#0 x zp ZP_BYTE:7 34.33333333333333
|
||||
(signed byte) atan2::x#1 x zp ZP_BYTE:7 667.3333333333334
|
||||
(signed byte) atan2::x#2 x zp ZP_BYTE:7 667.3333333333334
|
||||
(signed byte) atan2::x#3 x zp ZP_BYTE:7 801.2
|
||||
(signed byte) atan2::x#8 x zp ZP_BYTE:7 1001.0
|
||||
(signed byte) atan2::x#0 x zp ZP_BYTE:3 4.192307692307692
|
||||
(signed byte) atan2::xd
|
||||
(signed byte) atan2::xd#0 xd zp ZP_BYTE:9 600.5999999999999
|
||||
(signed byte) atan2::xd#0 xd zp ZP_BYTE:18 600.5999999999999
|
||||
(signed byte) atan2::xi
|
||||
(signed byte) atan2::xi#0 xi zp ZP_BYTE:6 6.0
|
||||
(signed byte) atan2::xi#1 xi zp ZP_BYTE:6 667.3333333333334
|
||||
(signed byte) atan2::xi#2 xi zp ZP_BYTE:6 667.3333333333334
|
||||
(signed byte) atan2::xi#3 xi zp ZP_BYTE:6 801.2
|
||||
(signed byte) atan2::xi#7 xi zp ZP_BYTE:6 1001.0
|
||||
(signed byte~) atan2::xi#8 xi zp ZP_BYTE:6 4.0
|
||||
(signed byte) atan2::y
|
||||
(signed byte) atan2::y#0 y zp ZP_BYTE:6 51.5
|
||||
(signed byte) atan2::y#1 y zp ZP_BYTE:6 1001.0
|
||||
(signed byte) atan2::y#2 y zp ZP_BYTE:6 1001.0
|
||||
(signed byte) atan2::y#3 y zp ZP_BYTE:6 858.2857142857142
|
||||
(signed byte) atan2::y#8 y zp ZP_BYTE:6 1001.0
|
||||
(signed byte) atan2::y#0 y zp ZP_BYTE:2 3.8928571428571437
|
||||
(signed byte) atan2::yd
|
||||
(signed byte) atan2::yd#0 reg byte y 1501.5
|
||||
(signed byte) atan2::yi
|
||||
(signed byte) atan2::yi#0 reg byte x 1.2000000000000002
|
||||
(signed byte) atan2::yi#1 reg byte x 1001.0
|
||||
(signed byte~) atan2::yi#11 reg byte x 4.0
|
||||
(signed byte) atan2::yi#2 reg byte x 1001.0
|
||||
(signed byte) atan2::yi#3 reg byte x 858.2857142857142
|
||||
(signed byte) atan2::yi#7 reg byte x 1001.0
|
||||
(void()) init_font_hex((byte*) init_font_hex::charset)
|
||||
(byte~) init_font_hex::$0 $0 zp ZP_BYTE:19 1001.0
|
||||
(byte~) init_font_hex::$1 reg byte a 2002.0
|
||||
(byte~) init_font_hex::$2 reg byte a 2002.0
|
||||
(label) init_font_hex::@1
|
||||
(label) init_font_hex::@2
|
||||
(label) init_font_hex::@3
|
||||
(label) init_font_hex::@4
|
||||
(label) init_font_hex::@5
|
||||
(label) init_font_hex::@return
|
||||
(byte) init_font_hex::c
|
||||
(byte) init_font_hex::c#1 c zp ZP_BYTE:11 16.5
|
||||
(byte) init_font_hex::c#6 c zp ZP_BYTE:11 1.1578947368421053
|
||||
(byte) init_font_hex::c1
|
||||
(byte) init_font_hex::c1#1 c1 zp ZP_BYTE:16 151.5
|
||||
(byte) init_font_hex::c1#4 c1 zp ZP_BYTE:16 13.466666666666667
|
||||
(byte*) init_font_hex::charset
|
||||
(byte*) init_font_hex::charset#0 charset zp ZP_WORD:12 35.5
|
||||
(byte*) init_font_hex::charset#2 charset zp ZP_WORD:12 108.35714285714285
|
||||
(byte*) init_font_hex::charset#5 charset zp ZP_WORD:12 22.0
|
||||
(byte) init_font_hex::i
|
||||
(byte) init_font_hex::i#1 reg byte x 1501.5
|
||||
(byte) init_font_hex::i#2 reg byte x 667.3333333333334
|
||||
(byte) init_font_hex::idx
|
||||
(byte) init_font_hex::idx#2 idx zp ZP_BYTE:17 551.0
|
||||
(byte) init_font_hex::idx#3 reg byte y 202.0
|
||||
(byte) init_font_hex::idx#5 idx zp ZP_BYTE:17 600.5999999999999
|
||||
(byte*) init_font_hex::proto_hi
|
||||
(byte*) init_font_hex::proto_hi#1 proto_hi zp ZP_WORD:9 7.333333333333333
|
||||
(byte*) init_font_hex::proto_hi#6 proto_hi zp ZP_WORD:9 56.83333333333334
|
||||
(byte*) init_font_hex::proto_lo
|
||||
(byte*) init_font_hex::proto_lo#1 proto_lo zp ZP_WORD:14 50.5
|
||||
(byte*) init_font_hex::proto_lo#4 proto_lo zp ZP_WORD:14 92.53846153846155
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@return
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(byte) main::angle
|
||||
(byte) main::angle#0 reg byte a 202.0
|
||||
(byte*) main::col00
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#1 screen zp ZP_WORD:3 7.333333333333333
|
||||
(byte*) main::screen#5 screen zp ZP_WORD:3 12.299999999999999
|
||||
(byte*) main::screen#1 screen zp ZP_WORD:4 42.599999999999994
|
||||
(byte*) main::screen#2 screen zp ZP_WORD:4 44.85714285714286
|
||||
(byte*) main::screen#4 screen zp ZP_WORD:4 22.0
|
||||
(label) main::toD0181
|
||||
(word~) main::toD0181_$0
|
||||
(number~) main::toD0181_$1
|
||||
(number~) main::toD0181_$2
|
||||
(number~) main::toD0181_$3
|
||||
(word~) main::toD0181_$4
|
||||
(byte~) main::toD0181_$5
|
||||
(number~) main::toD0181_$6
|
||||
(number~) main::toD0181_$7
|
||||
(number~) main::toD0181_$8
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f
|
||||
(byte*) main::toD0181_screen
|
||||
(signed byte) main::x
|
||||
(signed byte) main::x#1 x zp ZP_BYTE:5 151.5
|
||||
(signed byte) main::x#2 x zp ZP_BYTE:5 57.714285714285715
|
||||
(signed byte) main::x#1 x zp ZP_BYTE:3 151.5
|
||||
(signed byte) main::x#2 x zp ZP_BYTE:3 37.875
|
||||
(signed byte) main::y
|
||||
(signed byte) main::y#1 y zp ZP_BYTE:2 16.5
|
||||
(signed byte) main::y#4 y zp ZP_BYTE:2 11.181818181818182
|
||||
|
||||
zp ZP_BYTE:2 [ main::y#4 main::y#1 ]
|
||||
zp ZP_WORD:3 [ main::screen#5 main::screen#1 ]
|
||||
zp ZP_BYTE:5 [ main::x#2 main::x#1 ]
|
||||
zp ZP_BYTE:6 [ atan2::y#3 atan2::y#0 atan2::y#8 atan2::y#1 atan2::y#2 ]
|
||||
zp ZP_BYTE:7 [ atan2::x#3 atan2::x#0 atan2::x#8 atan2::x#1 atan2::x#2 ]
|
||||
zp ZP_BYTE:8 [ atan2::i#2 atan2::i#1 ]
|
||||
reg byte x [ atan2::return#1 atan2::angle#4 atan2::angle#7 atan2::angle#1 atan2::angle#2 ]
|
||||
zp ZP_BYTE:2 [ main::y#4 main::y#1 atan2::y#0 ]
|
||||
zp ZP_BYTE:3 [ main::x#2 main::x#1 atan2::x#0 ]
|
||||
zp ZP_WORD:4 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
reg byte x [ atan2::yi#3 atan2::yi#7 atan2::yi#0 atan2::yi#11 atan2::$2 atan2::yi#1 atan2::yi#2 ]
|
||||
zp ZP_BYTE:6 [ atan2::xi#3 atan2::xi#7 atan2::xi#0 atan2::xi#8 atan2::$7 atan2::xi#1 atan2::xi#2 ]
|
||||
zp ZP_BYTE:7 [ atan2::i#2 atan2::i#1 ]
|
||||
zp ZP_BYTE:8 [ atan2::angle#6 atan2::angle#12 atan2::angle#13 atan2::angle#2 atan2::angle#3 ]
|
||||
reg byte x [ atan2::return#1 atan2::angle#5 atan2::angle#11 atan2::angle#1 atan2::angle#4 ]
|
||||
zp ZP_WORD:9 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
zp ZP_BYTE:11 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
zp ZP_WORD:12 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
zp ZP_WORD:14 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
zp ZP_BYTE:16 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ]
|
||||
zp ZP_BYTE:17 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
reg byte a [ atan2::return#0 ]
|
||||
reg byte a [ main::angle#0 ]
|
||||
zp ZP_BYTE:9 [ atan2::xd#0 ]
|
||||
zp ZP_BYTE:18 [ atan2::xd#0 ]
|
||||
reg byte y [ atan2::yd#0 ]
|
||||
zp ZP_BYTE:19 [ init_font_hex::$0 ]
|
||||
reg byte a [ init_font_hex::$1 ]
|
||||
reg byte a [ init_font_hex::$2 ]
|
||||
reg byte y [ init_font_hex::idx#3 ]
|
||||
|
Loading…
Reference in New Issue
Block a user