1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-10-21 02:24:34 +00:00

Merged optimizations.

This commit is contained in:
jespergravgaard 2019-07-05 06:56:24 +02:00
parent 49c930f71e
commit e64659025e
18 changed files with 4273 additions and 2088 deletions

View File

@ -22,11 +22,11 @@ word atan2_16(signed word x, signed word y) {
// We found the correct angle!
break;
}
// xd=xi>>i; yd=yi>>i
// Optimized shift of 2 values: xd=xi>>i; yd=yi>>i
signed word xd = xi;
signed word yd = yi;
byte shift = i;
while(shift>1) {
while(shift>=2) {
xd >>= 2;
yd >>= 2;
shift -=2;

View File

@ -243,7 +243,7 @@ atan2_16: {
lda yi+1
sta yd+1
b13:
cpy #1+1
cpy #2
bcs b14
cpy #0
beq b17

View File

@ -168,7 +168,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[78] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[78] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[78] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[79] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[79] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[80] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17

View File

@ -219,7 +219,7 @@ atan2_16::@18: scope:[atan2_16] from atan2_16::@16 atan2_16::@19
(signed word) atan2_16::yd#7 ← phi( atan2_16::@16/(signed word) atan2_16::yd#0 atan2_16::@19/(signed word) atan2_16::yd#1 )
(signed word) atan2_16::xd#7 ← phi( atan2_16::@16/(signed word) atan2_16::xd#0 atan2_16::@19/(signed word) atan2_16::xd#1 )
(byte) atan2_16::shift#2 ← phi( atan2_16::@16/(byte) atan2_16::shift#0 atan2_16::@19/(byte) atan2_16::shift#1 )
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
if((bool~) atan2_16::$19) goto atan2_16::@19
to:atan2_16::@20
atan2_16::@19: scope:[atan2_16] from atan2_16::@18
@ -1118,7 +1118,7 @@ Adding number conversion cast (unumber) atan2_16::$16 in (number~) atan2_16::$16
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (number) 0
Adding number conversion cast (unumber) 2 in (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (number) 2
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (number) 0
Adding number conversion cast (unumber) 1 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
Adding number conversion cast (unumber) 2 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (number) 2
Adding number conversion cast (unumber) 2 in (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#3 - (number) 2
@ -1267,7 +1267,7 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
@ -1313,7 +1313,7 @@ Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 2
Finalized unsigned number type (byte) 2
@ -1502,7 +1502,7 @@ Simple Condition (bool~) atan2_16::$0 [41] if((signed word) atan2_16::y#0>=(sign
Simple Condition (bool~) atan2_16::$5 [50] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
Simple Condition (bool~) atan2_16::$18 [64] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16
Simple Condition (bool~) atan2_16::$11 [73] if((signed word) atan2_16::x#17>=(signed byte) 0) goto atan2_16::@7
Simple Condition (bool~) atan2_16::$19 [76] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$19 [76] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$20 [84] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25
Simple Condition (bool~) atan2_16::$21 [87] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26
Simple Condition (bool~) atan2_16::$22 [104] if((byte) atan2_16::i#1!=rangelast(0,atan2_16::$16)) goto atan2_16::@15
@ -1563,7 +1563,6 @@ Resolved ranged next value [225] main::x#1 ← ++ main::x#2 to ++
Resolved ranged comparison value [227] if(main::x#1!=rangelast(-$13,$14)) goto main::@2 to (number) $15
Resolved ranged next value [229] main::y#1 ← ++ main::y#4 to ++
Resolved ranged comparison value [231] if(main::y#1!=rangelast(-$c,$c)) goto main::@1 to (number) $d
Rewriting conditional comparison [76] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Converting *(pointer+n) to pointer[n] [243] *((byte*) main::col00#0) ← ++ *((byte*) main::col00#0) -- *(main::$3 + $13)
Converting *(pointer+n) to pointer[n] [243] *((byte*) main::col00#0) ← ++ *((byte*~) main::$3 + (byte) $13) -- *(main::$3 + $13)
Successful SSA optimization Pass2InlineDerefIdx
@ -1577,23 +1576,18 @@ Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) 5 in if((byte) init_font_hex::i#1!=(number) 5) goto init_font_hex::@3
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c1#1!=(number) $10) goto init_font_hex::@2
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c#1!=(number) $10) goto init_font_hex::@1
Adding number conversion cast (unumber) 1+1 in if((byte) atan2_16::shift#2>=(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (unumber) 1 in if((byte) atan2_16::shift#2>=(unumber)(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (snumber) $15 in if((signed byte) main::x#1!=(number) $15) goto main::@2
Adding number conversion cast (snumber) $d in if((signed byte) main::y#1!=(number) $d) goto main::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 5
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Simplifying constant integer cast (byte) 1+(unumber)(number) 1
Simplifying constant integer cast 1
Simplifying constant integer cast $15
Simplifying constant integer cast $d
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) $15
Finalized signed number type (signed byte) $d
Successful SSA optimization PassNFinalizeNumberTypeConversions
@ -2031,7 +2025,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[78] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[78] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[78] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[79] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[79] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[80] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17
@ -2985,9 +2979,9 @@ atan2_16: {
jmp b13
//SEG162 atan2_16::@13
b13:
//SEG163 [79] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
//SEG163 [79] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
lda shift
cmp #1+1
cmp #2
bcs b14
jmp b15
//SEG164 atan2_16::@15
@ -4063,8 +4057,8 @@ atan2_16: {
jmp b13
//SEG162 atan2_16::@13
b13:
//SEG163 [79] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG163 [79] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
jmp b15
//SEG164 atan2_16::@15
@ -5228,8 +5222,8 @@ atan2_16: {
//SEG161 [78] phi (byte) atan2_16::shift#2 = (byte~) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy
//SEG162 atan2_16::@13
b13:
//SEG163 [79] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG163 [79] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
//SEG164 atan2_16::@15
//SEG165 [80] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1

View File

@ -153,7 +153,7 @@ atan2_16: {
lda yi+1
sta yd+1
b13:
cpy #1+1
cpy #2
bcs b14
cpy #0
beq b17

View File

@ -100,7 +100,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[46] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[46] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[46] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[47] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[47] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[48] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17

View File

@ -196,7 +196,7 @@ atan2_16::@18: scope:[atan2_16] from atan2_16::@16 atan2_16::@19
(signed word) atan2_16::yd#7 ← phi( atan2_16::@16/(signed word) atan2_16::yd#0 atan2_16::@19/(signed word) atan2_16::yd#1 )
(signed word) atan2_16::xd#7 ← phi( atan2_16::@16/(signed word) atan2_16::xd#0 atan2_16::@19/(signed word) atan2_16::xd#1 )
(byte) atan2_16::shift#2 ← phi( atan2_16::@16/(byte) atan2_16::shift#0 atan2_16::@19/(byte) atan2_16::shift#1 )
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
if((bool~) atan2_16::$19) goto atan2_16::@19
to:atan2_16::@20
atan2_16::@19: scope:[atan2_16] from atan2_16::@18
@ -811,7 +811,7 @@ Adding number conversion cast (unumber) atan2_16::$16 in (number~) atan2_16::$16
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (number) 0
Adding number conversion cast (unumber) 2 in (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (number) 2
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (number) 0
Adding number conversion cast (unumber) 1 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
Adding number conversion cast (unumber) 2 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (number) 2
Adding number conversion cast (unumber) 2 in (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#3 - (number) 2
@ -954,7 +954,7 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
@ -996,7 +996,7 @@ Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 2
Finalized unsigned number type (byte) 2
@ -1141,7 +1141,7 @@ Simple Condition (bool~) atan2_16::$0 [41] if((signed word) atan2_16::y#0>=(sign
Simple Condition (bool~) atan2_16::$5 [50] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
Simple Condition (bool~) atan2_16::$18 [64] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16
Simple Condition (bool~) atan2_16::$11 [73] if((signed word) atan2_16::x#17>=(signed byte) 0) goto atan2_16::@7
Simple Condition (bool~) atan2_16::$19 [76] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$19 [76] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$20 [84] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25
Simple Condition (bool~) atan2_16::$21 [87] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26
Simple Condition (bool~) atan2_16::$22 [104] if((byte) atan2_16::i#1!=rangelast(0,atan2_16::$16)) goto atan2_16::@15
@ -1193,7 +1193,6 @@ Resolved ranged next value [171] main::x#1 ← ++ main::x#2 to ++
Resolved ranged comparison value [173] if(main::x#1!=rangelast(-$13,$14)) goto main::@2 to (number) $15
Resolved ranged next value [175] main::y#1 ← ++ main::y#4 to ++
Resolved ranged comparison value [177] if(main::y#1!=rangelast(-$c,$c)) goto main::@1 to (number) $d
Rewriting conditional comparison [76] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Converting *(pointer+n) to pointer[n] [184] *((byte*) main::col00#0) ← ++ *((byte*) main::col00#0) -- *(main::$2 + $13)
Converting *(pointer+n) to pointer[n] [184] *((byte*) main::col00#0) ← ++ *((byte*~) main::$2 + (byte) $13) -- *(main::$2 + $13)
Successful SSA optimization Pass2InlineDerefIdx
@ -1207,23 +1206,18 @@ Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) 5 in if((byte) init_font_hex::i#1!=(number) 5) goto init_font_hex::@3
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c1#1!=(number) $10) goto init_font_hex::@2
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c#1!=(number) $10) goto init_font_hex::@1
Adding number conversion cast (unumber) 1+1 in if((byte) atan2_16::shift#2>=(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (unumber) 1 in if((byte) atan2_16::shift#2>=(unumber)(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (snumber) $15 in if((signed byte) main::x#1!=(number) $15) goto main::@2
Adding number conversion cast (snumber) $d in if((signed byte) main::y#1!=(number) $d) goto main::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 5
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Simplifying constant integer cast (byte) 1+(unumber)(number) 1
Simplifying constant integer cast 1
Simplifying constant integer cast $15
Simplifying constant integer cast $d
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) $15
Finalized signed number type (signed byte) $d
Successful SSA optimization PassNFinalizeNumberTypeConversions
@ -1558,7 +1552,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[46] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[46] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[46] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[47] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[47] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[48] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17
@ -2212,9 +2206,9 @@ atan2_16: {
jmp b13
//SEG96 atan2_16::@13
b13:
//SEG97 [47] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
//SEG97 [47] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
lda shift
cmp #1+1
cmp #2
bcs b14
jmp b15
//SEG98 atan2_16::@15
@ -3044,8 +3038,8 @@ atan2_16: {
jmp b13
//SEG96 atan2_16::@13
b13:
//SEG97 [47] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG97 [47] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
jmp b15
//SEG98 atan2_16::@15
@ -3944,8 +3938,8 @@ atan2_16: {
//SEG95 [46] phi (byte) atan2_16::shift#2 = (byte~) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy
//SEG96 atan2_16::@13
b13:
//SEG97 [47] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG97 [47] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
//SEG98 atan2_16::@15
//SEG99 [48] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1

View File

@ -218,7 +218,7 @@ atan2_16: {
lda yi+1
sta yd+1
b13:
cpy #1+1
cpy #2
bcs b14
cpy #0
beq b17

View File

@ -129,7 +129,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[64] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[64] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[64] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[65] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[65] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[66] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17

View File

@ -200,7 +200,7 @@ atan2_16::@18: scope:[atan2_16] from atan2_16::@16 atan2_16::@19
(signed word) atan2_16::yd#7 ← phi( atan2_16::@16/(signed word) atan2_16::yd#0 atan2_16::@19/(signed word) atan2_16::yd#1 )
(signed word) atan2_16::xd#7 ← phi( atan2_16::@16/(signed word) atan2_16::xd#0 atan2_16::@19/(signed word) atan2_16::xd#1 )
(byte) atan2_16::shift#2 ← phi( atan2_16::@16/(byte) atan2_16::shift#0 atan2_16::@19/(byte) atan2_16::shift#1 )
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
if((bool~) atan2_16::$19) goto atan2_16::@19
to:atan2_16::@20
atan2_16::@19: scope:[atan2_16] from atan2_16::@18
@ -883,7 +883,7 @@ Adding number conversion cast (unumber) atan2_16::$16 in (number~) atan2_16::$16
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (number) 0
Adding number conversion cast (unumber) 2 in (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (number) 2
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (number) 0
Adding number conversion cast (unumber) 1 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
Adding number conversion cast (unumber) 2 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (number) 2
Adding number conversion cast (unumber) 2 in (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#3 - (number) 2
@ -1045,7 +1045,7 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
@ -1097,7 +1097,7 @@ Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 2
Finalized unsigned number type (byte) 2
@ -1267,7 +1267,7 @@ Simple Condition (bool~) atan2_16::$0 [41] if((signed word) atan2_16::y#0>=(sign
Simple Condition (bool~) atan2_16::$5 [50] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
Simple Condition (bool~) atan2_16::$18 [64] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16
Simple Condition (bool~) atan2_16::$11 [73] if((signed word) atan2_16::x#17>=(signed byte) 0) goto atan2_16::@7
Simple Condition (bool~) atan2_16::$19 [76] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$19 [76] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$20 [84] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25
Simple Condition (bool~) atan2_16::$21 [87] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26
Simple Condition (bool~) atan2_16::$22 [104] if((byte) atan2_16::i#1!=rangelast(0,atan2_16::$16)) goto atan2_16::@15
@ -1321,7 +1321,6 @@ Resolved ranged next value [32] init_font_hex::c#1 ← ++ init_font_hex::c#5 to
Resolved ranged comparison value [34] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 to (number) $10
Resolved ranged next value [206] init_angle_screen::y#1 ← ++ init_angle_screen::y#4 to ++
Resolved ranged comparison value [208] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 to (number) $d
Rewriting conditional comparison [76] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Rewriting conditional comparison [202] if((byte) init_angle_screen::x#1<=(byte) $13) goto init_angle_screen::@2
Simplifying expression containing zero init_font_hex::charset#2 in [8] *((byte*) init_font_hex::charset#2 + (const byte) init_font_hex::idx#0) ← (byte) 0
Successful SSA optimization PassNSimplifyExpressionWithZero
@ -1332,8 +1331,6 @@ Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) 5 in if((byte) init_font_hex::i#1!=(number) 5) goto init_font_hex::@3
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c1#1!=(number) $10) goto init_font_hex::@2
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c#1!=(number) $10) goto init_font_hex::@1
Adding number conversion cast (unumber) 1+1 in if((byte) atan2_16::shift#2>=(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (unumber) 1 in if((byte) atan2_16::shift#2>=(unumber)(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (unumber) $13+1 in if((byte) init_angle_screen::x#1<(byte) $13+(number) 1) goto init_angle_screen::@2
Adding number conversion cast (unumber) 1 in if((byte) init_angle_screen::x#1<(unumber)(byte) $13+(number) 1) goto init_angle_screen::@2
Adding number conversion cast (unumber) $d in if((byte) init_angle_screen::y#1!=(number) $d) goto init_angle_screen::@1
@ -1341,8 +1338,6 @@ Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 5
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Simplifying constant integer cast (byte) 1+(unumber)(number) 1
Simplifying constant integer cast 1
Simplifying constant integer cast (byte~) init_angle_screen::$3
Simplifying constant integer cast (byte~) init_angle_screen::$6
Simplifying constant integer cast (byte) $13+(unumber)(number) 1
@ -1353,7 +1348,6 @@ Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $d
Successful SSA optimization PassNFinalizeNumberTypeConversions
Self Phi Eliminated (byte*) init_font_hex::proto_hi#4
@ -1728,7 +1722,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[64] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[64] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[64] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[65] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[65] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[66] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17
@ -2546,9 +2540,9 @@ atan2_16: {
jmp b13
//SEG125 atan2_16::@13
b13:
//SEG126 [65] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
//SEG126 [65] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
lda shift
cmp #1+1
cmp #2
bcs b14
jmp b15
//SEG127 atan2_16::@15
@ -3537,8 +3531,8 @@ atan2_16: {
jmp b13
//SEG125 atan2_16::@13
b13:
//SEG126 [65] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG126 [65] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
jmp b15
//SEG127 atan2_16::@15
@ -4579,8 +4573,8 @@ atan2_16: {
//SEG124 [64] phi (byte) atan2_16::shift#2 = (byte~) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy
//SEG125 atan2_16::@13
b13:
//SEG126 [65] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG126 [65] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
//SEG127 atan2_16::@15
//SEG128 [66] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1

View File

@ -167,17 +167,17 @@ init_angle_screen: {
.label ang_w = $2b
.label x = $e
.label xb = $f
.label screen_topline = $a
.label screen_bottomline = $c
.label screen_topline = $c
.label screen_bottomline = $a
.label y = 9
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
lda #<SCREEN+$28*$c
sta screen_topline
lda #>SCREEN+$28*$c
sta screen_topline+1
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
lda #0
sta y
b1:
@ -208,6 +208,12 @@ init_angle_screen: {
!:
lda _10+1
sta ang_w
ldy xb
sta (screen_bottomline),y
eor #$ff
clc
adc #1
sta (screen_topline),y
lda #$80
clc
adc ang_w
@ -217,14 +223,6 @@ init_angle_screen: {
sec
sbc ang_w
sta (screen_bottomline),y
lda ang_w
eor #$ff
clc
adc #1
ldy xb
sta (screen_topline),y
lda ang_w
sta (screen_bottomline),y
inc x
dec xb
lda x
@ -334,7 +332,7 @@ atan2_16: {
lda yi+1
sta yd+1
b13:
cpy #1+1
cpy #2
bcs b14
cpy #0
beq b17

View File

@ -103,8 +103,8 @@ init_angle_screen: scope:[init_angle_screen] from main::@3
[49] phi()
to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_angle_screen::@3
[50] (byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $c init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
[50] (byte*) init_angle_screen::screen_topline#5 ← phi( init_angle_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $c init_angle_screen::@3/(byte*) init_angle_screen::screen_topline#1 )
[50] (byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $c init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
[50] (byte) init_angle_screen::y#4 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@3/(byte) init_angle_screen::y#1 )
to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 init_angle_screen::@4
@ -124,13 +124,13 @@ init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2
[61] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
[62] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80
[63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10
[64] (byte~) init_angle_screen::$12 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
[65] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$12
[66] (byte~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
[67] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13
[68] (byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0
[69] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14
[70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
[64] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
[65] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0
[66] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12
[67] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
[68] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13
[69] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
[70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14
[71] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2
[72] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2
[73] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@2
@ -197,7 +197,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[99] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[99] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[99] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[100] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[100] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[101] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17

View File

@ -238,7 +238,7 @@ atan2_16::@18: scope:[atan2_16] from atan2_16::@16 atan2_16::@19
(signed word) atan2_16::yd#7 ← phi( atan2_16::@16/(signed word) atan2_16::yd#0 atan2_16::@19/(signed word) atan2_16::yd#1 )
(signed word) atan2_16::xd#7 ← phi( atan2_16::@16/(signed word) atan2_16::xd#0 atan2_16::@19/(signed word) atan2_16::xd#1 )
(byte) atan2_16::shift#2 ← phi( atan2_16::@16/(byte) atan2_16::shift#0 atan2_16::@19/(byte) atan2_16::shift#1 )
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
(bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
if((bool~) atan2_16::$19) goto atan2_16::@19
to:atan2_16::@20
atan2_16::@19: scope:[atan2_16] from atan2_16::@18
@ -560,16 +560,16 @@ init_angle_screen: scope:[init_angle_screen] from main::@4
(byte) init_angle_screen::y#0 ← (byte) 0
to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_angle_screen::@3
(byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
(byte*) init_angle_screen::screen_topline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_topline#1 )
(byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
(byte) init_angle_screen::y#4 ← phi( init_angle_screen/(byte) init_angle_screen::y#0 init_angle_screen::@3/(byte) init_angle_screen::y#1 )
(byte) init_angle_screen::x#0 ← (number) 0
(byte) init_angle_screen::xb#0 ← (number) $27
to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 init_angle_screen::@5
(byte*) init_angle_screen::screen_topline#4 ← phi( init_angle_screen::@1/(byte*) init_angle_screen::screen_topline#5 init_angle_screen::@5/(byte*) init_angle_screen::screen_topline#2 )
(byte) init_angle_screen::xb#3 ← phi( init_angle_screen::@1/(byte) init_angle_screen::xb#0 init_angle_screen::@5/(byte) init_angle_screen::xb#1 )
(byte*) init_angle_screen::screen_bottomline#4 ← phi( init_angle_screen::@1/(byte*) init_angle_screen::screen_bottomline#5 init_angle_screen::@5/(byte*) init_angle_screen::screen_bottomline#2 )
(byte*) init_angle_screen::screen_topline#4 ← phi( init_angle_screen::@1/(byte*) init_angle_screen::screen_topline#5 init_angle_screen::@5/(byte*) init_angle_screen::screen_topline#2 )
(byte) init_angle_screen::y#2 ← phi( init_angle_screen::@1/(byte) init_angle_screen::y#4 init_angle_screen::@5/(byte) init_angle_screen::y#5 )
(byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) init_angle_screen::x#0 init_angle_screen::@5/(byte) init_angle_screen::x#1 )
(number~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 * (number) 2
@ -588,23 +588,23 @@ init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 ini
to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@2
(byte) init_angle_screen::y#5 ← phi( init_angle_screen::@2/(byte) init_angle_screen::y#2 )
(byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@2/(byte) init_angle_screen::xb#3 )
(byte*) init_angle_screen::screen_bottomline#2 ← phi( init_angle_screen::@2/(byte*) init_angle_screen::screen_bottomline#4 )
(byte) init_angle_screen::x#3 ← phi( init_angle_screen::@2/(byte) init_angle_screen::x#2 )
(byte*) init_angle_screen::screen_topline#2 ← phi( init_angle_screen::@2/(byte*) init_angle_screen::screen_topline#4 )
(byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@2/(byte) init_angle_screen::xb#3 )
(byte*) init_angle_screen::screen_bottomline#2 ← phi( init_angle_screen::@2/(byte*) init_angle_screen::screen_bottomline#4 )
(word) atan2_16::return#4 ← phi( init_angle_screen::@2/(word) atan2_16::return#2 )
(word~) init_angle_screen::$9 ← (word) atan2_16::return#4
(word) init_angle_screen::angle_w#0 ← (word~) init_angle_screen::$9
(number~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (number) $80
(number~) init_angle_screen::$11 ← > (number~) init_angle_screen::$10
(byte) init_angle_screen::ang_w#0 ← (number~) init_angle_screen::$11
(number~) init_angle_screen::$12 ← (number) $80 + (byte) init_angle_screen::ang_w#0
*((byte*) init_angle_screen::screen_topline#2 + (byte) init_angle_screen::x#3) ← (number~) init_angle_screen::$12
(number~) init_angle_screen::$13 ← (number) $80 - (byte) init_angle_screen::ang_w#0
*((byte*) init_angle_screen::screen_bottomline#2 + (byte) init_angle_screen::x#3) ← (number~) init_angle_screen::$13
(byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0
*((byte*) init_angle_screen::screen_topline#2 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14
*((byte*) init_angle_screen::screen_bottomline#2 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
(byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0
*((byte*) init_angle_screen::screen_topline#2 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12
(number~) init_angle_screen::$13 ← (number) $80 + (byte) init_angle_screen::ang_w#0
*((byte*) init_angle_screen::screen_topline#2 + (byte) init_angle_screen::x#3) ← (number~) init_angle_screen::$13
(number~) init_angle_screen::$14 ← (number) $80 - (byte) init_angle_screen::ang_w#0
*((byte*) init_angle_screen::screen_bottomline#2 + (byte) init_angle_screen::x#3) ← (number~) init_angle_screen::$14
(byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#3
(byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2
(bool~) init_angle_screen::$15 ← (byte) init_angle_screen::x#1 <= (number) $13
@ -887,9 +887,9 @@ SYMBOL TABLE SSA
(byte*~) init_angle_screen::$1
(number~) init_angle_screen::$10
(number~) init_angle_screen::$11
(number~) init_angle_screen::$12
(byte~) init_angle_screen::$12
(number~) init_angle_screen::$13
(byte~) init_angle_screen::$14
(number~) init_angle_screen::$14
(bool~) init_angle_screen::$15
(bool~) init_angle_screen::$16
(number~) init_angle_screen::$2
@ -1178,7 +1178,7 @@ Adding number conversion cast (unumber) atan2_16::$16 in (number~) atan2_16::$16
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (number) 0
Adding number conversion cast (unumber) 2 in (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (number) 2
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (number) 0
Adding number conversion cast (unumber) 1 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 > (number) 1
Adding number conversion cast (unumber) 2 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (number) 2
Adding number conversion cast (unumber) 2 in (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#3 - (number) 2
@ -1232,10 +1232,10 @@ Adding number conversion cast (unumber) init_angle_screen::$6 in (number~) init_
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (number) $80
Adding number conversion cast (unumber) init_angle_screen::$10 in (number~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (unumber)(number) $80
Adding number conversion cast (unumber) init_angle_screen::$11 in (number~) init_angle_screen::$11 ← > (unumber~) init_angle_screen::$10
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$12 ← (number) $80 + (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$12 in (number~) init_angle_screen::$12 ← (unumber)(number) $80 + (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$13 ← (number) $80 - (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in (number~) init_angle_screen::$13 ← (unumber)(number) $80 - (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$13 ← (number) $80 + (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in (number~) init_angle_screen::$13 ← (unumber)(number) $80 + (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$14 ← (number) $80 - (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$14 in (number~) init_angle_screen::$14 ← (unumber)(number) $80 - (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $13 in (bool~) init_angle_screen::$15 ← (byte) init_angle_screen::x#1 <= (number) $13
Adding number conversion cast (unumber) $28 in (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#3 - (number) $28
Adding number conversion cast (unumber) $28 in (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#3 + (number) $28
@ -1378,7 +1378,7 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
@ -1444,7 +1444,7 @@ Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 2
Finalized unsigned number type (byte) 2
@ -1503,8 +1503,8 @@ Inferred type updated to byte in (unumber~) init_angle_screen::$3 ← (byte) $27
Inferred type updated to byte in (unumber~) init_angle_screen::$6 ← (byte) init_angle_screen::y#2 * (byte) 2
Inferred type updated to word in (unumber~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80
Inferred type updated to byte in (unumber~) init_angle_screen::$11 ← > (word~) init_angle_screen::$10
Inferred type updated to byte in (unumber~) init_angle_screen::$12 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
Inferred type updated to byte in (unumber~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
Inferred type updated to byte in (unumber~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
Inferred type updated to byte in (unumber~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
Inversing boolean not [72] (bool~) atan2_16::$18 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [71] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (signed byte) 0
Inversing boolean not [81] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [80] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0
Inversing boolean not [92] (bool~) atan2_16::$20 ← (byte) 0 == (byte) atan2_16::shift#4 from [91] (bool~) atan2_16::$25 ← (byte) 0 != (byte) atan2_16::shift#4
@ -1583,10 +1583,10 @@ Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::
Alias (word~) init_angle_screen::$7 = (word~) init_angle_screen::$18
Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$8
Alias (word) atan2_16::return#2 = (word) atan2_16::return#4
Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#3
Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3
Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#3
Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3
Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#3
Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3
Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#5 (byte) init_angle_screen::y#3
Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$9
Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$11
@ -1614,8 +1614,8 @@ Self Phi Eliminated (word) atan2_16::angle#14
Self Phi Eliminated (signed word) atan2_16::x#11
Self Phi Eliminated (signed word) atan2_16::y#10
Self Phi Eliminated (byte) init_angle_screen::y#2
Self Phi Eliminated (byte*) init_angle_screen::screen_topline#2
Self Phi Eliminated (byte*) init_angle_screen::screen_bottomline#2
Self Phi Eliminated (byte*) init_angle_screen::screen_topline#2
Successful SSA optimization Pass2SelfPhiElimination
Identical Phi Values (byte*) init_font_hex::charset#6 (byte*) init_font_hex::charset#1
Identical Phi Values (byte*) init_font_hex::proto_hi#2 (byte*) init_font_hex::proto_hi#4
@ -1635,8 +1635,8 @@ Identical Phi Values (dword) print_dword_at::dw#1 (dword) print_dword_at::dw#0
Identical Phi Values (byte*) print_dword_at::at#1 (byte*) print_dword_at::at#0
Identical Phi Values (byte*) init_angle_screen::screen#1 (byte*) init_angle_screen::screen#0
Identical Phi Values (byte) init_angle_screen::y#2 (byte) init_angle_screen::y#4
Identical Phi Values (byte*) init_angle_screen::screen_topline#2 (byte*) init_angle_screen::screen_topline#5
Identical Phi Values (byte*) init_angle_screen::screen_bottomline#2 (byte*) init_angle_screen::screen_bottomline#5
Identical Phi Values (byte*) init_angle_screen::screen_topline#2 (byte*) init_angle_screen::screen_topline#5
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (signed word) atan2_16::x#4 (signed word) atan2_16::x#17
Identical Phi Values (signed word) atan2_16::y#4 (signed word) atan2_16::y#19
@ -1651,7 +1651,7 @@ Simple Condition (bool~) atan2_16::$0 [50] if((signed word) atan2_16::y#0>=(sign
Simple Condition (bool~) atan2_16::$5 [59] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
Simple Condition (bool~) atan2_16::$18 [73] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16
Simple Condition (bool~) atan2_16::$11 [82] if((signed word) atan2_16::x#17>=(signed byte) 0) goto atan2_16::@7
Simple Condition (bool~) atan2_16::$19 [85] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$19 [85] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$20 [93] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25
Simple Condition (bool~) atan2_16::$21 [96] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26
Simple Condition (bool~) atan2_16::$22 [113] if((byte) atan2_16::i#1!=rangelast(0,atan2_16::$16)) goto atan2_16::@15
@ -1716,7 +1716,6 @@ Resolved ranged next value [41] init_font_hex::c#1 ← ++ init_font_hex::c#5 to
Resolved ranged comparison value [43] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 to (number) $10
Resolved ranged next value [289] init_angle_screen::y#1 ← ++ init_angle_screen::y#4 to ++
Resolved ranged comparison value [291] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 to (number) $d
Rewriting conditional comparison [85] if((byte) atan2_16::shift#2>(byte) 1) goto atan2_16::@19
Rewriting conditional comparison [285] if((byte) init_angle_screen::x#1<=(byte) $13) goto init_angle_screen::@2
Simplifying expression containing zero init_font_hex::charset#2 in [17] *((byte*) init_font_hex::charset#2 + (const byte) init_font_hex::idx#0) ← (byte) 0
Simplifying expression containing zero CIA_TIMER_CONTROL_CONTINUOUS#0 in [135] (byte~) clock_start::$0 ← (const byte) CIA_TIMER_CONTROL_STOP#0 | (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0
@ -1731,8 +1730,6 @@ Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) 5 in if((byte) init_font_hex::i#1!=(number) 5) goto init_font_hex::@3
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c1#1!=(number) $10) goto init_font_hex::@2
Adding number conversion cast (unumber) $10 in if((byte) init_font_hex::c#1!=(number) $10) goto init_font_hex::@1
Adding number conversion cast (unumber) 1+1 in if((byte) atan2_16::shift#2>=(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (unumber) 1 in if((byte) atan2_16::shift#2>=(unumber)(byte) 1+(number) 1) goto atan2_16::@19
Adding number conversion cast (unumber) $13+1 in if((byte) init_angle_screen::x#1<(byte) $13+(number) 1) goto init_angle_screen::@2
Adding number conversion cast (unumber) 1 in if((byte) init_angle_screen::x#1<(unumber)(byte) $13+(number) 1) goto init_angle_screen::@2
Adding number conversion cast (unumber) $d in if((byte) init_angle_screen::y#1!=(number) $d) goto init_angle_screen::@1
@ -1740,8 +1737,6 @@ Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 5
Simplifying constant integer cast $10
Simplifying constant integer cast $10
Simplifying constant integer cast (byte) 1+(unumber)(number) 1
Simplifying constant integer cast 1
Simplifying constant integer cast (byte~) init_angle_screen::$3
Simplifying constant integer cast (byte~) init_angle_screen::$6
Simplifying constant integer cast (byte) $13+(unumber)(number) 1
@ -1752,7 +1747,6 @@ Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $d
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte~) clock_start::$1 = (byte~) clock_start::$0 (byte~) clock_start::$2
@ -1965,8 +1959,8 @@ Coalesced [57] print_char_at::at#3 ← print_char_at::at#0
Coalesced [62] print_char_at::ch#4 ← print_char_at::ch#1
Coalesced [63] print_char_at::at#4 ← print_char_at::at#1
Coalesced [102] init_angle_screen::y#6 ← init_angle_screen::y#1
Coalesced [103] init_angle_screen::screen_topline#6 ← init_angle_screen::screen_topline#1
Coalesced [104] init_angle_screen::screen_bottomline#6 ← init_angle_screen::screen_bottomline#1
Coalesced [103] init_angle_screen::screen_bottomline#6 ← init_angle_screen::screen_bottomline#1
Coalesced [104] init_angle_screen::screen_topline#6 ← init_angle_screen::screen_topline#1
Coalesced [105] init_angle_screen::x#4 ← init_angle_screen::x#1
Coalesced [106] init_angle_screen::xb#4 ← init_angle_screen::xb#1
Coalesced [109] atan2_16::yi#17 ← atan2_16::$2
@ -2170,8 +2164,8 @@ init_angle_screen: scope:[init_angle_screen] from main::@3
[49] phi()
to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_angle_screen::@3
[50] (byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $c init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
[50] (byte*) init_angle_screen::screen_topline#5 ← phi( init_angle_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $c init_angle_screen::@3/(byte*) init_angle_screen::screen_topline#1 )
[50] (byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $c init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
[50] (byte) init_angle_screen::y#4 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@3/(byte) init_angle_screen::y#1 )
to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 init_angle_screen::@4
@ -2191,13 +2185,13 @@ init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2
[61] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
[62] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80
[63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10
[64] (byte~) init_angle_screen::$12 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
[65] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$12
[66] (byte~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
[67] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13
[68] (byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0
[69] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14
[70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
[64] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
[65] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0
[66] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12
[67] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
[68] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13
[69] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
[70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14
[71] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2
[72] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2
[73] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@2
@ -2264,7 +2258,7 @@ atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
[99] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
[99] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
[99] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
[100] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14
[100] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
to:atan2_16::@15
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
[101] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17
@ -2447,7 +2441,7 @@ VARIABLE REGISTER WEIGHTS
(byte~) init_angle_screen::$3 202.0
(byte~) init_angle_screen::$6 202.0
(byte) init_angle_screen::ang_w
(byte) init_angle_screen::ang_w#0 72.14285714285714
(byte) init_angle_screen::ang_w#0 84.16666666666666
(word) init_angle_screen::angle_w
(word) init_angle_screen::angle_w#0 202.0
(byte*) init_angle_screen::screen
@ -2568,8 +2562,8 @@ Initial phi equivalence classes
[ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
[ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
[ init_angle_screen::y#4 init_angle_screen::y#1 ]
[ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
[ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
@ -2622,8 +2616,8 @@ Complete equivalence classes
[ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
[ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
[ init_angle_screen::y#4 init_angle_screen::y#1 ]
[ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
[ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
@ -2675,8 +2669,8 @@ Allocated zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::
Allocated zp ZP_BYTE:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
Allocated zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Allocated zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Allocated zp ZP_WORD:13 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Allocated zp ZP_WORD:15 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
Allocated zp ZP_WORD:13 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
Allocated zp ZP_WORD:15 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Allocated zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Allocated zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Allocated zp ZP_WORD:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
@ -3081,29 +3075,29 @@ init_angle_screen: {
.label ang_w = $52
.label x = $11
.label xb = $12
.label screen_topline = $d
.label screen_bottomline = $f
.label screen_topline = $f
.label screen_bottomline = $d
.label y = $c
//SEG94 [50] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
b1_from_init_angle_screen:
//SEG95 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#0] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
//SEG96 [50] phi (byte*) init_angle_screen::screen_topline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#1] -- pbuz1=pbuc1
//SEG95 [50] phi (byte*) init_angle_screen::screen_topline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#0] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_topline
lda #>SCREEN+$28*$c
sta screen_topline+1
//SEG96 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#1] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
//SEG97 [50] phi (byte) init_angle_screen::y#4 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1
lda #0
sta y
jmp b1
//SEG98 [50] phi from init_angle_screen::@3 to init_angle_screen::@1 [phi:init_angle_screen::@3->init_angle_screen::@1]
b1_from_b3:
//SEG99 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy
//SEG100 [50] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy
//SEG99 [50] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy
//SEG100 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy
//SEG101 [50] phi (byte) init_angle_screen::y#4 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@3->init_angle_screen::@1#2] -- register_copy
jmp b1
//SEG102 init_angle_screen::@1
@ -3183,36 +3177,36 @@ init_angle_screen: {
//SEG122 [63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 -- vbuz1=_hi_vwuz2
lda _10+1
sta ang_w
//SEG123 [64] (byte~) init_angle_screen::$12 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_plus_vbuz2
lax ang_w
axs #-[$80]
stx _12
//SEG124 [65] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuz3
lda _12
ldy x
sta (screen_topline),y
//SEG125 [66] (byte~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_minus_vbuz2
lda #$80
sec
sbc ang_w
sta _13
//SEG126 [67] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuz3
lda _13
ldy x
//SEG123 [64] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda ang_w
ldy xb
sta (screen_bottomline),y
//SEG127 [68] (byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0 -- vbuz1=_neg_vbuz2
//SEG124 [65] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 -- vbuz1=_neg_vbuz2
lda ang_w
eor #$ff
clc
adc #1
sta _14
//SEG128 [69] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuz3
lda _14
sta _12
//SEG125 [66] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuz3
lda _12
ldy xb
sta (screen_topline),y
//SEG129 [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda ang_w
ldy xb
//SEG126 [67] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_plus_vbuz2
lax ang_w
axs #-[$80]
stx _13
//SEG127 [68] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuz3
lda _13
ldy x
sta (screen_topline),y
//SEG128 [69] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_minus_vbuz2
lda #$80
sec
sbc ang_w
sta _14
//SEG129 [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuz3
lda _14
ldy x
sta (screen_bottomline),y
//SEG130 [71] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
inc x
@ -3426,9 +3420,9 @@ atan2_16: {
jmp b13
//SEG186 atan2_16::@13
b13:
//SEG187 [100] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
//SEG187 [100] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1
lda shift
cmp #1+1
cmp #2
bcs b14
jmp b15
//SEG188 atan2_16::@15
@ -3821,62 +3815,63 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ p
Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ]
Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] ) always clobbers reg byte a
Statement [52] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ) always clobbers reg byte a
Statement [52] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [53] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a
Statement [54] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y
Statement [53] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a
Statement [54] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [55] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ) always clobbers reg byte a
Statement [56] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y
Statement [57] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a
Statement [58] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [60] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a
Statement [61] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a
Statement [62] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ) always clobbers reg byte a
Statement [63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a
Statement [65] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$12 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [55] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ) always clobbers reg byte a
Statement [56] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y
Statement [57] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a
Statement [58] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [60] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a
Statement [61] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a
Statement [62] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ) always clobbers reg byte a
Statement [63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a
Statement [64] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:82 [ init_angle_screen::ang_w#0 ]
Statement [66] (byte~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a
Statement [65] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ init_angle_screen::ang_w#0 ]
Statement [67] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [68] (byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a
Statement [69] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte a reg byte y
Statement [66] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [67] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a
Statement [68] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [69] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ) always clobbers reg byte a
Statement [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y
Statement [74] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a
Statement [75] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a
Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a
Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a
Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a
Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a
Statement [75] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a
Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a
Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a
Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a
Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ atan2_16::i#2 atan2_16::i#1 ]
Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a
Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a
Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a
Statement [97] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a
Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a
Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a
Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a
Statement [97] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
Statement [98] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a
Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a
Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a
Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a
Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a
Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a
Statement [108] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ) always clobbers reg byte a
Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a
Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [115] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ) always clobbers reg byte a
Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a
Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a
Statement [120] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a
Statement [121] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a
Statement [98] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a
Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a
Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a
Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a
Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a
Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a
Statement [108] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ) always clobbers reg byte a
Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a
Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [115] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ) always clobbers reg byte a
Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a
Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a
Statement [120] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a
Statement [121] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a
Statement [122] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a
Statement [123] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a
Statement [124] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a
@ -3915,53 +3910,53 @@ Statement [39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte)
Statement [40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a
Statement [45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:38 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:38 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:38 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:38 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:29::print_char_at:42 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:29::print_char_at:42 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:17::print_word_at:22::print_byte_at:32::print_char_at:42 [ print_dword_at::dw#0 ] main:2::print_dword_at:17::print_word_at:24::print_byte_at:32::print_char_at:42 [ ] ) always clobbers reg byte a reg byte y
Statement [47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) [ clock::return#0 ] ( main:2::clock:12 [ clock::return#0 ] ) always clobbers reg byte a
Statement [52] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ) always clobbers reg byte a
Statement [53] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a
Statement [54] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y
Statement [55] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ) always clobbers reg byte a
Statement [56] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y
Statement [57] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a
Statement [58] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [60] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a
Statement [61] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a
Statement [62] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ) always clobbers reg byte a
Statement [63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a
Statement [64] (byte~) init_angle_screen::$12 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ) always clobbers reg byte a
Statement [65] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$12 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [66] (byte~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a
Statement [67] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [68] (byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$14 ] ) always clobbers reg byte a
Statement [69] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte a reg byte y
Statement [52] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ) always clobbers reg byte a
Statement [53] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a
Statement [54] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y
Statement [55] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ) always clobbers reg byte a
Statement [56] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y
Statement [57] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a
Statement [58] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [60] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a
Statement [61] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a
Statement [62] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ) always clobbers reg byte a
Statement [63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a
Statement [64] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y
Statement [65] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ) always clobbers reg byte a
Statement [66] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [67] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a
Statement [68] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y
Statement [69] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ) always clobbers reg byte a
Statement [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y
Statement [74] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a
Statement [75] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ) always clobbers reg byte a
Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a
Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a
Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a
Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a
Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a
Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a
Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a
Statement [97] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a
Statement [98] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a
Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a
Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a
Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a
Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a
Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a
Statement [108] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ) always clobbers reg byte a
Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a
Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [115] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ) always clobbers reg byte a
Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a
Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a
Statement [120] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a
Statement [121] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_bottomline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a
Statement [75] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ( main:2::init_angle_screen:10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a
Statement [79] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a
Statement [80] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a
Statement [82] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a
Statement [83] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a
Statement [86] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a
Statement [88] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [89] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a
Statement [90] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a
Statement [92] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a
Statement [93] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a
Statement [97] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a
Statement [98] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a
Statement [102] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a
Statement [103] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a
Statement [105] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a
Statement [106] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a
Statement [107] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a
Statement [108] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ) always clobbers reg byte a
Statement [109] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a
Statement [113] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [114] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [115] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ) always clobbers reg byte a
Statement [116] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a
Statement [117] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a
Statement [118] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a
Statement [120] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a
Statement [121] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:2::init_angle_screen:10::atan2_16:59 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a
Statement [122] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a
Statement [123] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a
Statement [124] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff [ ] ( main:2::clock_start:8 [ ] ) always clobbers reg byte a
@ -3982,8 +3977,8 @@ Potential registers zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print
Potential registers zp ZP_BYTE:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] : zp ZP_WORD:10 ,
Potential registers zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ] : zp ZP_BYTE:12 , reg byte x ,
Potential registers zp ZP_WORD:13 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ] : zp ZP_WORD:13 ,
Potential registers zp ZP_WORD:15 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ] : zp ZP_WORD:15 ,
Potential registers zp ZP_WORD:13 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ] : zp ZP_WORD:13 ,
Potential registers zp ZP_WORD:15 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ] : zp ZP_WORD:15 ,
Potential registers zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp ZP_BYTE:17 , reg byte x ,
Potential registers zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp ZP_BYTE:18 , reg byte x ,
Potential registers zp ZP_WORD:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp ZP_WORD:19 ,
@ -4032,7 +4027,7 @@ Potential registers zp ZP_BYTE:91 [ init_font_hex::idx#3 ] : zp ZP_BYTE:91 , reg
REGISTER UPLIFT SCOPES
Uplift Scope [atan2_16] 28,670.58: zp ZP_BYTE:28 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp ZP_WORD:29 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp ZP_WORD:31 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp ZP_WORD:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp ZP_WORD:19 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp ZP_WORD:21 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp ZP_BYTE:86 [ atan2_16::$24 ] 2,002: zp ZP_BYTE:87 [ atan2_16::$23 ] 1,710.04: zp ZP_BYTE:23 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp ZP_WORD:76 [ atan2_16::return#2 ] 50: zp ZP_WORD:26 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp ZP_WORD:72 [ atan2_16::x#0 ] 2.72: zp ZP_WORD:74 [ atan2_16::y#0 ]
Uplift Scope [init_font_hex] 2,168.83: zp ZP_BYTE:41 [ init_font_hex::i#2 init_font_hex::i#1 ] 2,002: zp ZP_BYTE:89 [ init_font_hex::$1 ] 2,002: zp ZP_BYTE:90 [ init_font_hex::$2 ] 1,151.6: zp ZP_BYTE:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 1,001: zp ZP_BYTE:88 [ init_font_hex::$0 ] 202: zp ZP_BYTE:91 [ init_font_hex::idx#3 ] 165.86: zp ZP_WORD:36 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 164.97: zp ZP_BYTE:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 143.04: zp ZP_WORD:38 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 64.17: zp ZP_WORD:33 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 17.66: zp ZP_BYTE:35 [ init_font_hex::c#6 init_font_hex::c#1 ]
Uplift Scope [init_angle_screen] 202: zp ZP_BYTE:65 [ init_angle_screen::$2 ] 202: zp ZP_BYTE:66 [ init_angle_screen::$3 ] 202: zp ZP_BYTE:69 [ init_angle_screen::$6 ] 202: zp ZP_WORD:78 [ init_angle_screen::angle_w#0 ] 202: zp ZP_WORD:80 [ init_angle_screen::$10 ] 202: zp ZP_BYTE:83 [ init_angle_screen::$12 ] 202: zp ZP_BYTE:84 [ init_angle_screen::$13 ] 202: zp ZP_BYTE:85 [ init_angle_screen::$14 ] 126.25: zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 120.24: zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 72.14: zp ZP_BYTE:82 [ init_angle_screen::ang_w#0 ] 50.5: zp ZP_WORD:70 [ init_angle_screen::yw#0 ] 33.67: zp ZP_WORD:67 [ init_angle_screen::xw#0 ] 21.23: zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ] 16.29: zp ZP_WORD:15 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ] 14.83: zp ZP_WORD:13 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Uplift Scope [init_angle_screen] 202: zp ZP_BYTE:65 [ init_angle_screen::$2 ] 202: zp ZP_BYTE:66 [ init_angle_screen::$3 ] 202: zp ZP_BYTE:69 [ init_angle_screen::$6 ] 202: zp ZP_WORD:78 [ init_angle_screen::angle_w#0 ] 202: zp ZP_WORD:80 [ init_angle_screen::$10 ] 202: zp ZP_BYTE:83 [ init_angle_screen::$12 ] 202: zp ZP_BYTE:84 [ init_angle_screen::$13 ] 202: zp ZP_BYTE:85 [ init_angle_screen::$14 ] 126.25: zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 120.24: zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 84.17: zp ZP_BYTE:82 [ init_angle_screen::ang_w#0 ] 50.5: zp ZP_WORD:70 [ init_angle_screen::yw#0 ] 33.67: zp ZP_WORD:67 [ init_angle_screen::xw#0 ] 21.23: zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ] 16.29: zp ZP_WORD:13 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ] 14.83: zp ZP_WORD:15 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Uplift Scope [print_char_at] 12: zp ZP_BYTE:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 12: zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Uplift Scope [print_byte_at] 9.33: zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 5.6: zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] 4: zp ZP_BYTE:59 [ print_byte_at::$0 ] 2: zp ZP_BYTE:60 [ print_byte_at::$2 ]
Uplift Scope [print_word_at] 10: zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 0.8: zp ZP_WORD:4 [ print_word_at::at#2 ]
@ -4046,20 +4041,20 @@ Uplifting [atan2_16] best 1159771 combination reg byte y [ atan2_16::shift#2 ata
Limited combination testing to 100 combinations of 144 possible.
Uplifting [init_font_hex] best 1140771 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp ZP_BYTE:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp ZP_BYTE:88 [ init_font_hex::$0 ] zp ZP_BYTE:91 [ init_font_hex::idx#3 ] zp ZP_WORD:36 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp ZP_BYTE:40 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp ZP_WORD:38 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp ZP_WORD:33 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp ZP_BYTE:35 [ init_font_hex::c#6 init_font_hex::c#1 ]
Limited combination testing to 100 combinations of 6912 possible.
Uplifting [init_angle_screen] best 1138771 combination reg byte a [ init_angle_screen::$2 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$6 ] zp ZP_WORD:78 [ init_angle_screen::angle_w#0 ] zp ZP_WORD:80 [ init_angle_screen::$10 ] reg byte a [ init_angle_screen::$12 ] zp ZP_BYTE:84 [ init_angle_screen::$13 ] zp ZP_BYTE:85 [ init_angle_screen::$14 ] zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] zp ZP_BYTE:82 [ init_angle_screen::ang_w#0 ] zp ZP_WORD:70 [ init_angle_screen::yw#0 ] zp ZP_WORD:67 [ init_angle_screen::xw#0 ] zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ] zp ZP_WORD:15 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ] zp ZP_WORD:13 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Uplifting [init_angle_screen] best 1138571 combination reg byte a [ init_angle_screen::$2 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$6 ] zp ZP_WORD:78 [ init_angle_screen::angle_w#0 ] zp ZP_WORD:80 [ init_angle_screen::$10 ] reg byte a [ init_angle_screen::$12 ] zp ZP_BYTE:84 [ init_angle_screen::$13 ] zp ZP_BYTE:85 [ init_angle_screen::$14 ] zp ZP_BYTE:17 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp ZP_BYTE:18 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] zp ZP_BYTE:82 [ init_angle_screen::ang_w#0 ] zp ZP_WORD:70 [ init_angle_screen::yw#0 ] zp ZP_WORD:67 [ init_angle_screen::xw#0 ] zp ZP_BYTE:12 [ init_angle_screen::y#4 init_angle_screen::y#1 ] zp ZP_WORD:13 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ] zp ZP_WORD:15 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Limited combination testing to 100 combinations of 65536 possible.
Uplifting [print_char_at] best 1138764 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Uplifting [print_byte_at] best 1138756 combination zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ]
Uplifting [print_word_at] best 1138756 combination zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp ZP_WORD:4 [ print_word_at::at#2 ]
Uplifting [main] best 1138756 combination zp ZP_DWORD:47 [ main::$4 ] zp ZP_DWORD:51 [ main::cyclecount#0 ]
Uplifting [clock] best 1138756 combination zp ZP_DWORD:43 [ clock::return#2 ] zp ZP_DWORD:61 [ clock::return#0 ]
Uplifting [print_dword_at] best 1138756 combination zp ZP_DWORD:55 [ print_dword_at::dw#0 ]
Uplifting [clock_start] best 1138756 combination
Uplifting [] best 1138756 combination
Uplifting [print_char_at] best 1138564 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Uplifting [print_byte_at] best 1138556 combination zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ]
Uplifting [print_word_at] best 1138556 combination zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp ZP_WORD:4 [ print_word_at::at#2 ]
Uplifting [main] best 1138556 combination zp ZP_DWORD:47 [ main::$4 ] zp ZP_DWORD:51 [ main::cyclecount#0 ]
Uplifting [clock] best 1138556 combination zp ZP_DWORD:43 [ clock::return#2 ] zp ZP_DWORD:61 [ clock::return#0 ]
Uplifting [print_dword_at] best 1138556 combination zp ZP_DWORD:55 [ print_dword_at::dw#0 ]
Uplifting [clock_start] best 1138556 combination
Uplifting [] best 1138556 combination
Attempting to uplift remaining variables inzp ZP_BYTE:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
Uplifting [init_font_hex] best 1138756 combination zp ZP_BYTE:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
Uplifting [init_font_hex] best 1138556 combination zp ZP_BYTE:42 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:88 [ init_font_hex::$0 ]
Uplifting [init_font_hex] best 1138756 combination zp ZP_BYTE:88 [ init_font_hex::$0 ]
Uplifting [init_font_hex] best 1138556 combination zp ZP_BYTE:88 [ init_font_hex::$0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:84 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1138156 combination reg byte a [ init_angle_screen::$13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:85 [ init_angle_screen::$14 ]
@ -4093,8 +4088,8 @@ Coalescing zero page register with common assignment [ zp ZP_DWORD:43 [ clock::r
Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp ZP_WORD:80 [ init_angle_screen::$10 ] ] - score: 1
Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:9 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Allocated (was zp ZP_WORD:13) zp ZP_WORD:10 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Allocated (was zp ZP_WORD:15) zp ZP_WORD:12 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
Allocated (was zp ZP_WORD:13) zp ZP_WORD:10 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
Allocated (was zp ZP_WORD:15) zp ZP_WORD:12 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:14 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:15 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Allocated (was zp ZP_WORD:19) zp ZP_WORD:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
@ -4431,29 +4426,29 @@ init_angle_screen: {
.label ang_w = $2b
.label x = $e
.label xb = $f
.label screen_topline = $a
.label screen_bottomline = $c
.label screen_topline = $c
.label screen_bottomline = $a
.label y = 9
//SEG94 [50] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
b1_from_init_angle_screen:
//SEG95 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#0] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
//SEG96 [50] phi (byte*) init_angle_screen::screen_topline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#1] -- pbuz1=pbuc1
//SEG95 [50] phi (byte*) init_angle_screen::screen_topline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#0] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_topline
lda #>SCREEN+$28*$c
sta screen_topline+1
//SEG96 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#1] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
//SEG97 [50] phi (byte) init_angle_screen::y#4 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1
lda #0
sta y
jmp b1
//SEG98 [50] phi from init_angle_screen::@3 to init_angle_screen::@1 [phi:init_angle_screen::@3->init_angle_screen::@1]
b1_from_b3:
//SEG99 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy
//SEG100 [50] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy
//SEG99 [50] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy
//SEG100 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy
//SEG101 [50] phi (byte) init_angle_screen::y#4 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@3->init_angle_screen::@1#2] -- register_copy
jmp b1
//SEG102 init_angle_screen::@1
@ -4512,31 +4507,31 @@ init_angle_screen: {
//SEG122 [63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 -- vbuz1=_hi_vwuz2
lda _10+1
sta ang_w
//SEG123 [64] (byte~) init_angle_screen::$12 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc ang_w
//SEG124 [65] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy x
sta (screen_topline),y
//SEG125 [66] (byte~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc ang_w
//SEG126 [67] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
ldy x
//SEG123 [64] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda ang_w
ldy xb
sta (screen_bottomline),y
//SEG127 [68] (byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
//SEG124 [65] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
lda ang_w
eor #$ff
clc
adc #1
//SEG128 [69] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuaa
//SEG125 [66] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy xb
sta (screen_topline),y
//SEG129 [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda ang_w
ldy xb
//SEG126 [67] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc ang_w
//SEG127 [68] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
ldy x
sta (screen_topline),y
//SEG128 [69] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc ang_w
//SEG129 [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuaa
ldy x
sta (screen_bottomline),y
//SEG130 [71] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
inc x
@ -4735,8 +4730,8 @@ atan2_16: {
jmp b13
//SEG186 atan2_16::@13
b13:
//SEG187 [100] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG187 [100] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
jmp b15
//SEG188 atan2_16::@15
@ -5142,8 +5137,10 @@ Removing instruction jmp b5
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Removing instruction ldy x
Removing instruction lda ang_w
Removing instruction lda ang_w
Removing instruction ldy xb
Removing instruction ldy x
Removing instruction lda #0
Replacing instruction ldx #0 with TAX
Replacing instruction ldy #0 with TAY
@ -5252,9 +5249,9 @@ Removing instruction jmp b3
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [374] beq b12 to bne
Fixing long branch [268] bpl b1 to bmi
Fixing long branch [280] bpl b4 to bmi
Fixing long branch [372] beq b12 to bne
Fixing long branch [266] bpl b1 to bmi
Fixing long branch [278] bpl b4 to bmi
FINAL SYMBOL TABLE
(label) @1
@ -5388,16 +5385,16 @@ FINAL SYMBOL TABLE
(label) init_angle_screen::@4
(label) init_angle_screen::@return
(byte) init_angle_screen::ang_w
(byte) init_angle_screen::ang_w#0 ang_w zp ZP_BYTE:43 72.14285714285714
(byte) init_angle_screen::ang_w#0 ang_w zp ZP_BYTE:43 84.16666666666666
(word) init_angle_screen::angle_w
(word) init_angle_screen::angle_w#0 angle_w zp ZP_WORD:20 202.0
(byte*) init_angle_screen::screen
(byte*) init_angle_screen::screen_bottomline
(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:12 7.333333333333333
(byte*) init_angle_screen::screen_bottomline#5 screen_bottomline zp ZP_WORD:12 8.959999999999999
(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:10 7.333333333333333
(byte*) init_angle_screen::screen_bottomline#5 screen_bottomline zp ZP_WORD:10 8.959999999999999
(byte*) init_angle_screen::screen_topline
(byte*) init_angle_screen::screen_topline#1 screen_topline zp ZP_WORD:10 5.5
(byte*) init_angle_screen::screen_topline#5 screen_topline zp ZP_WORD:10 9.333333333333334
(byte*) init_angle_screen::screen_topline#1 screen_topline zp ZP_WORD:12 5.5
(byte*) init_angle_screen::screen_topline#5 screen_topline zp ZP_WORD:12 9.333333333333334
(byte) init_angle_screen::x
(byte) init_angle_screen::x#1 x zp ZP_BYTE:14 101.0
(byte) init_angle_screen::x#2 x zp ZP_BYTE:14 25.25
@ -5533,8 +5530,8 @@ zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
zp ZP_WORD:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
zp ZP_BYTE:9 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
zp ZP_WORD:10 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
zp ZP_WORD:12 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
zp ZP_WORD:10 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
zp ZP_WORD:12 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
zp ZP_BYTE:14 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
zp ZP_BYTE:15 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
zp ZP_WORD:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
@ -5572,7 +5569,7 @@ reg byte y [ init_font_hex::idx#3 ]
FINAL ASSEMBLER
Score: 1045267
Score: 1044667
//SEG0 File Comments
// Calculate the angle to the center of the screen - and show it using font-hex
@ -5837,26 +5834,26 @@ init_angle_screen: {
.label ang_w = $2b
.label x = $e
.label xb = $f
.label screen_topline = $a
.label screen_bottomline = $c
.label screen_topline = $c
.label screen_bottomline = $a
.label y = 9
//SEG94 [50] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
//SEG95 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#0] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
//SEG96 [50] phi (byte*) init_angle_screen::screen_topline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#1] -- pbuz1=pbuc1
//SEG95 [50] phi (byte*) init_angle_screen::screen_topline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#0] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_topline
lda #>SCREEN+$28*$c
sta screen_topline+1
//SEG96 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $c [phi:init_angle_screen->init_angle_screen::@1#1] -- pbuz1=pbuc1
lda #<SCREEN+$28*$c
sta screen_bottomline
lda #>SCREEN+$28*$c
sta screen_bottomline+1
//SEG97 [50] phi (byte) init_angle_screen::y#4 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1
lda #0
sta y
//SEG98 [50] phi from init_angle_screen::@3 to init_angle_screen::@1 [phi:init_angle_screen::@3->init_angle_screen::@1]
//SEG99 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy
//SEG100 [50] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy
//SEG99 [50] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy
//SEG100 [50] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy
//SEG101 [50] phi (byte) init_angle_screen::y#4 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@3->init_angle_screen::@1#2] -- register_copy
//SEG102 init_angle_screen::@1
b1:
@ -5907,29 +5904,27 @@ init_angle_screen: {
//SEG122 [63] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 -- vbuz1=_hi_vwuz2
lda _10+1
sta ang_w
//SEG123 [64] (byte~) init_angle_screen::$12 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc ang_w
//SEG124 [65] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
ldy x
sta (screen_topline),y
//SEG125 [66] (byte~) init_angle_screen::$13 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc ang_w
//SEG126 [67] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
//SEG123 [64] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
ldy xb
sta (screen_bottomline),y
//SEG127 [68] (byte~) init_angle_screen::$14 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
lda ang_w
//SEG124 [65] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
eor #$ff
clc
adc #1
//SEG128 [69] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuaa
ldy xb
//SEG125 [66] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_topline),y
//SEG129 [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
lda ang_w
//SEG126 [67] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
lda #$80
clc
adc ang_w
//SEG127 [68] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa
ldy x
sta (screen_topline),y
//SEG128 [69] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
lda #$80
sec
sbc ang_w
//SEG129 [70] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuaa
sta (screen_bottomline),y
//SEG130 [71] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
inc x
@ -6097,8 +6092,8 @@ atan2_16: {
//SEG185 [99] phi (byte) atan2_16::shift#2 = (byte~) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy
//SEG186 atan2_16::@13
b13:
//SEG187 [100] if((byte) atan2_16::shift#2>=(byte) 1+(byte) 1) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #1+1
//SEG187 [100] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
cpy #2
bcs b14
//SEG188 atan2_16::@15
//SEG189 [101] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1

View File

@ -129,16 +129,16 @@
(label) init_angle_screen::@4
(label) init_angle_screen::@return
(byte) init_angle_screen::ang_w
(byte) init_angle_screen::ang_w#0 ang_w zp ZP_BYTE:43 72.14285714285714
(byte) init_angle_screen::ang_w#0 ang_w zp ZP_BYTE:43 84.16666666666666
(word) init_angle_screen::angle_w
(word) init_angle_screen::angle_w#0 angle_w zp ZP_WORD:20 202.0
(byte*) init_angle_screen::screen
(byte*) init_angle_screen::screen_bottomline
(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:12 7.333333333333333
(byte*) init_angle_screen::screen_bottomline#5 screen_bottomline zp ZP_WORD:12 8.959999999999999
(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:10 7.333333333333333
(byte*) init_angle_screen::screen_bottomline#5 screen_bottomline zp ZP_WORD:10 8.959999999999999
(byte*) init_angle_screen::screen_topline
(byte*) init_angle_screen::screen_topline#1 screen_topline zp ZP_WORD:10 5.5
(byte*) init_angle_screen::screen_topline#5 screen_topline zp ZP_WORD:10 9.333333333333334
(byte*) init_angle_screen::screen_topline#1 screen_topline zp ZP_WORD:12 5.5
(byte*) init_angle_screen::screen_topline#5 screen_topline zp ZP_WORD:12 9.333333333333334
(byte) init_angle_screen::x
(byte) init_angle_screen::x#1 x zp ZP_BYTE:14 101.0
(byte) init_angle_screen::x#2 x zp ZP_BYTE:14 25.25
@ -274,8 +274,8 @@ zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
zp ZP_WORD:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
zp ZP_BYTE:9 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
zp ZP_WORD:10 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
zp ZP_WORD:12 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
zp ZP_WORD:10 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#1 ]
zp ZP_WORD:12 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#1 ]
zp ZP_BYTE:14 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
zp ZP_BYTE:15 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
zp ZP_WORD:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]

View File

@ -6,29 +6,170 @@
// Start of the heap used by malloc()
.label HEAP_START = $c000
.label D018 = $d018
// CIA #2 Timer A+B Value (32-bit)
.label CIA2_TIMER_AB = $dd04
// CIA #2 Timer A Control Register
.label CIA2_TIMER_A_CONTROL = $dd0e
// CIA #2 Timer B Control Register
.label CIA2_TIMER_B_CONTROL = $dd0f
// Timer Control - Start/stop timer (0:stop, 1: start)
.const CIA_TIMER_CONTROL_START = 1
// Timer Control - Time CONTINUOUS/ONE-SHOT (0:CONTINUOUS, 1: ONE-SHOT)
.const CIA_TIMER_CONTROL_CONTINUOUS = 0
// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
.const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
.const CLOCKS_PER_INIT = $12
.label CHARSET = $2000
.label SCREEN = $2800
.const NUM_SQUARES = $30
.label SQUARES = malloc.return
main: {
.label BASE_SCREEN = $400
.label BASE_CHARSET = $1000
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
.const toD0182_return = (>(BASE_SCREEN&$3fff)*4)|(>BASE_CHARSET)/4&$f
.label _4 = $21
.label cyclecount = $21
jsr init_font_hex
lda #toD0181_return
sta D018
jsr clock_start
jsr init_dist_screen
jsr clock
lda cyclecount
sec
sbc #<CLOCKS_PER_INIT
sta cyclecount
lda cyclecount+1
sbc #>CLOCKS_PER_INIT
sta cyclecount+1
lda cyclecount+2
sbc #<CLOCKS_PER_INIT>>$10
sta cyclecount+2
lda cyclecount+3
sbc #>CLOCKS_PER_INIT>>$10
sta cyclecount+3
jsr print_dword_at
lda #toD0182_return
sta D018
rts
}
// Print a dword as HEX at a specific position
// print_dword_at(dword zeropage($21) dw)
print_dword_at: {
.label dw = $21
lda dw+2
sta print_word_at.w
lda dw+3
sta print_word_at.w+1
lda #<main.BASE_SCREEN
sta print_word_at.at
lda #>main.BASE_SCREEN
sta print_word_at.at+1
jsr print_word_at
lda dw
sta print_word_at.w
lda dw+1
sta print_word_at.w+1
lda #<main.BASE_SCREEN+4
sta print_word_at.at
lda #>main.BASE_SCREEN+4
sta print_word_at.at+1
jsr print_word_at
rts
}
// Print a word as HEX at a specific position
// print_word_at(word zeropage(2) w, byte* zeropage(4) at)
print_word_at: {
.label w = 2
.label at = 4
lda w+1
sta print_byte_at.b
jsr print_byte_at
lda w
sta print_byte_at.b
lda print_byte_at.at
clc
adc #2
sta print_byte_at.at
bcc !+
inc print_byte_at.at+1
!:
jsr print_byte_at
rts
}
// Print a byte as HEX at a specific position
// print_byte_at(byte zeropage(6) b, byte* zeropage(4) at)
print_byte_at: {
.label b = 6
.label at = 4
lda b
lsr
lsr
lsr
lsr
tay
ldx print_hextab,y
lda at
sta print_char_at.at
lda at+1
sta print_char_at.at+1
jsr print_char_at
lda #$f
and b
tay
lda at
clc
adc #1
sta print_char_at.at
lda at+1
adc #0
sta print_char_at.at+1
ldx print_hextab,y
jsr print_char_at
rts
}
// Print a single char
// print_char_at(byte register(X) ch, byte* zeropage(9) at)
print_char_at: {
.label at = 9
txa
ldy #0
sta (at),y
rts
}
// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program).
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
clock: {
.label return = $21
lda #<$ffffffff
sec
sbc CIA2_TIMER_AB
sta return
lda #>$ffffffff
sbc CIA2_TIMER_AB+1
sta return+1
lda #<$ffffffff>>$10
sbc CIA2_TIMER_AB+2
sta return+2
lda #>$ffffffff>>$10
sbc CIA2_TIMER_AB+3
sta return+3
rts
}
// Populates 1000 bytes (a screen) with values representing the distance to the center.
// The actual value stored is distance*2 to increase precision
init_dist_screen: {
.label yds = $19
.label xds = $1b
.label ds = $1b
.label x = 7
.label xb = 9
.label screen_topline = 3
.label screen_bottomline = 5
.label y = 2
.label yds = $25
.label xds = $27
.label ds = $27
.label x = $10
.label xb = $11
.label screen_topline = $c
.label screen_bottomline = $e
.label y = $b
jsr init_squares
lda #<SCREEN+$28*$18
sta screen_bottomline
@ -118,12 +259,12 @@ init_dist_screen: {
// Find the (integer) square root of a word value
// If the square is not an integer then it returns the largest integer N where N*N <= val
// Uses a table of squares that must be initialized by calling init_squares()
// sqrt(word zeropage($1b) val)
// sqrt(word zeropage($27) val)
sqrt: {
.label _1 = $a
.label _3 = $a
.label found = $a
.label val = $1b
.label _1 = $12
.label _3 = $12
.label found = $12
.label val = $27
jsr bsearch16u
lda _3
sec
@ -142,14 +283,14 @@ sqrt: {
// - items - Pointer to the start of the array to search in
// - num - The number of items in the array
// Returns pointer to an entry in the array that matches the search key
// bsearch16u(word zeropage($1b) key, word* zeropage($a) items, byte register(X) num)
// bsearch16u(word zeropage($27) key, word* zeropage($12) items, byte register(X) num)
bsearch16u: {
.label _2 = $a
.label pivot = $1d
.label result = $1f
.label return = $a
.label items = $a
.label key = $1b
.label _2 = $12
.label pivot = $29
.label result = $2b
.label return = $12
.label items = $12
.label key = $27
lda #<SQUARES
sta items
lda #>SQUARES
@ -229,8 +370,8 @@ bsearch16u: {
// Uses a table of squares that must be initialized by calling init_squares()
// sqr(byte register(A) val)
sqr: {
.label return = $1b
.label return_2 = $19
.label return = $27
.label return_2 = $25
asl
tay
lda SQUARES,y
@ -242,8 +383,8 @@ sqr: {
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
.label squares = $e
.label sqr = $c
.label squares = $16
.label sqr = $14
jsr malloc
ldx #0
lda #<SQUARES
@ -288,16 +429,38 @@ malloc: {
.label return = HEAP_START
rts
}
// Reset & start the processor clock time. The value can be read using clock().
// This uses CIA #2 Timer A+B on the C64
clock_start: {
// Setup CIA#2 timer A to count (down) CPU cycles
lda #CIA_TIMER_CONTROL_CONTINUOUS
sta CIA2_TIMER_A_CONTROL
lda #CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
sta CIA2_TIMER_B_CONTROL
lda #<$ffffffff
sta CIA2_TIMER_AB
lda #>$ffffffff
sta CIA2_TIMER_AB+1
lda #<$ffffffff>>$10
sta CIA2_TIMER_AB+2
lda #>$ffffffff>>$10
sta CIA2_TIMER_AB+3
lda #CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
sta CIA2_TIMER_B_CONTROL
lda #CIA_TIMER_CONTROL_START
sta CIA2_TIMER_A_CONTROL
rts
}
// Make charset from proto chars
// init_font_hex(byte* zeropage($13) charset)
// init_font_hex(byte* zeropage($1b) charset)
init_font_hex: {
.label _0 = $21
.label idx = $18
.label proto_lo = $15
.label charset = $13
.label c1 = $17
.label proto_hi = $10
.label c = $12
.label _0 = $2d
.label idx = $20
.label proto_lo = $1d
.label charset = $1b
.label c1 = $1f
.label proto_hi = $18
.label c = $1a
lda #0
sta c
lda #<FONT_HEX_PROTO
@ -380,3 +543,4 @@ init_font_hex: {
}
// 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
print_hextab: .text "0123456789abcdef"

View File

@ -16,210 +16,298 @@ main::toD0181: scope:[main] from main
to:main::@1
main::@1: scope:[main] from main::toD0181
[7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
[8] call init_dist_screen
[8] call clock_start
to:main::@3
main::@3: scope:[main] from main::@1
[9] phi()
[10] call init_dist_screen
to:main::@4
main::@4: scope:[main] from main::@3
[11] phi()
[12] call clock
[13] (dword) clock::return#2 ← (dword) clock::return#0
to:main::@5
main::@5: scope:[main] from main::@4
[14] (dword~) main::$4 ← (dword) clock::return#2
[15] (dword) main::cyclecount#0 ← (dword~) main::$4 - (const dword) CLOCKS_PER_INIT#0
[16] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0
[17] call print_dword_at
to:main::toD0182
main::toD0182: scope:[main] from main::@5
[18] phi()
to:main::@2
main::@2: scope:[main] from main::toD0182
[19] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0
to:main::@return
main::@return: scope:[main] from main::@1
[9] return
main::@return: scope:[main] from main::@2
[20] return
to:@return
init_dist_screen: scope:[init_dist_screen] from main::@1
[10] phi()
[11] call init_squares
to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen] from init_dist_screen init_dist_screen::@9
[12] (byte*) init_dist_screen::screen_bottomline#10 ← phi( init_dist_screen::@9/(byte*) init_dist_screen::screen_bottomline#1 init_dist_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 )
[12] (byte*) init_dist_screen::screen_topline#10 ← phi( init_dist_screen::@9/(byte*) init_dist_screen::screen_topline#1 init_dist_screen/(const byte*) SCREEN#0 )
[12] (byte) init_dist_screen::y#10 ← phi( init_dist_screen::@9/(byte) init_dist_screen::y#1 init_dist_screen/(byte) 0 )
[13] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1
[14] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2
to:init_dist_screen::@3
init_dist_screen::@3: scope:[init_dist_screen] from init_dist_screen::@1
[15] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0
to:init_dist_screen::@4
init_dist_screen::@4: scope:[init_dist_screen] from init_dist_screen::@2 init_dist_screen::@3
[16] (byte) init_dist_screen::yd#0 ← phi( init_dist_screen::@2/(byte~) init_dist_screen::$7 init_dist_screen::@3/(byte~) init_dist_screen::$5 )
[17] (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0
[18] call sqr
[19] (word) sqr::return#2 ← (word) sqr::return#0
to:init_dist_screen::@10
init_dist_screen::@10: scope:[init_dist_screen] from init_dist_screen::@4
[20] (word) init_dist_screen::yds#0 ← (word) sqr::return#2
to:init_dist_screen::@5
init_dist_screen::@5: scope:[init_dist_screen] from init_dist_screen::@10 init_dist_screen::@12
[21] (byte) init_dist_screen::xb#2 ← phi( init_dist_screen::@10/(byte) $27 init_dist_screen::@12/(byte) init_dist_screen::xb#1 )
[21] (byte) init_dist_screen::x#2 ← phi( init_dist_screen::@10/(byte) 0 init_dist_screen::@12/(byte) init_dist_screen::x#1 )
[22] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1
[23] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@6
to:init_dist_screen::@7
init_dist_screen::@7: scope:[init_dist_screen] from init_dist_screen::@5
[24] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0
to:init_dist_screen::@8
init_dist_screen::@8: scope:[init_dist_screen] from init_dist_screen::@6 init_dist_screen::@7
[25] (byte) init_dist_screen::xd#0 ← phi( init_dist_screen::@6/(byte~) init_dist_screen::$15 init_dist_screen::@7/(byte~) init_dist_screen::$13 )
[26] (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0
[27] call sqr
[28] (word) sqr::return#3 ← (word) sqr::return#0
to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen] from init_dist_screen::@8
[29] (word) init_dist_screen::xds#0 ← (word) sqr::return#3
[30] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0
[31] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0
[32] call sqrt
[33] (byte) sqrt::return#2 ← (byte) sqrt::return#0
to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen] from init_dist_screen::@11
[34] (byte) init_dist_screen::d#0 ← (byte) sqrt::return#2
[35] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0
[36] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0
[37] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
[38] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
[39] (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#2
[40] (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#2
[41] if((byte) init_dist_screen::x#1<(byte) $13+(byte) 1) goto init_dist_screen::@5
to:init_dist_screen::@9
init_dist_screen::@9: scope:[init_dist_screen] from init_dist_screen::@12
[42] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28
[43] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28
[44] (byte) init_dist_screen::y#1 ← ++ (byte) init_dist_screen::y#10
[45] if((byte) init_dist_screen::y#1!=(byte) $d) goto init_dist_screen::@1
to:init_dist_screen::@return
init_dist_screen::@return: scope:[init_dist_screen] from init_dist_screen::@9
print_dword_at: scope:[print_dword_at] from main::@5
[21] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0
[22] call print_word_at
to:print_dword_at::@1
print_dword_at::@1: scope:[print_dword_at] from print_dword_at
[23] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0
[24] call print_word_at
to:print_dword_at::@return
print_dword_at::@return: scope:[print_dword_at] from print_dword_at::@1
[25] return
to:@return
print_word_at: scope:[print_word_at] from print_dword_at print_dword_at::@1
[26] (byte*) print_word_at::at#2 ← phi( print_dword_at/(const byte*) main::BASE_SCREEN#0 print_dword_at::@1/(const byte*) main::BASE_SCREEN#0+(byte) 4 )
[26] (word) print_word_at::w#2 ← phi( print_dword_at/(word) print_word_at::w#0 print_dword_at::@1/(word) print_word_at::w#1 )
[27] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2
[28] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2
[29] call print_byte_at
to:print_word_at::@1
print_word_at::@1: scope:[print_word_at] from print_word_at
[30] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2
[31] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2
[32] call print_byte_at
to:print_word_at::@return
print_word_at::@return: scope:[print_word_at] from print_word_at::@1
[33] return
to:@return
print_byte_at: scope:[print_byte_at] from print_word_at print_word_at::@1
[34] (byte*) print_byte_at::at#2 ← phi( print_word_at/(byte*) print_byte_at::at#0 print_word_at::@1/(byte*) print_byte_at::at#1 )
[34] (byte) print_byte_at::b#2 ← phi( print_word_at/(byte) print_byte_at::b#0 print_word_at::@1/(byte) print_byte_at::b#1 )
[35] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4
[36] (byte) print_char_at::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0)
[37] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2
[38] call print_char_at
to:print_byte_at::@1
print_byte_at::@1: scope:[print_byte_at] from print_byte_at
[39] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f
[40] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1
[41] (byte) print_char_at::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2)
[42] call print_char_at
to:print_byte_at::@return
print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@1
[43] return
to:@return
print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1
[44] (byte*) print_char_at::at#2 ← phi( print_byte_at/(byte*) print_char_at::at#0 print_byte_at::@1/(byte*) print_char_at::at#1 )
[44] (byte) print_char_at::ch#2 ← phi( print_byte_at/(byte) print_char_at::ch#0 print_byte_at::@1/(byte) print_char_at::ch#1 )
[45] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2
to:print_char_at::@return
print_char_at::@return: scope:[print_char_at] from print_char_at
[46] return
to:@return
clock: scope:[clock] from main::@4
[47] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0)
to:clock::@return
clock::@return: scope:[clock] from clock
[48] return
to:@return
init_dist_screen: scope:[init_dist_screen] from main::@3
[49] phi()
[50] call init_squares
to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen] from init_dist_screen init_dist_screen::@9
[51] (byte*) init_dist_screen::screen_bottomline#10 ← phi( init_dist_screen::@9/(byte*) init_dist_screen::screen_bottomline#1 init_dist_screen/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 )
[51] (byte*) init_dist_screen::screen_topline#10 ← phi( init_dist_screen::@9/(byte*) init_dist_screen::screen_topline#1 init_dist_screen/(const byte*) SCREEN#0 )
[51] (byte) init_dist_screen::y#10 ← phi( init_dist_screen::@9/(byte) init_dist_screen::y#1 init_dist_screen/(byte) 0 )
[52] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1
[53] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2
to:init_dist_screen::@3
init_dist_screen::@3: scope:[init_dist_screen] from init_dist_screen::@1
[54] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0
to:init_dist_screen::@4
init_dist_screen::@4: scope:[init_dist_screen] from init_dist_screen::@2 init_dist_screen::@3
[55] (byte) init_dist_screen::yd#0 ← phi( init_dist_screen::@2/(byte~) init_dist_screen::$7 init_dist_screen::@3/(byte~) init_dist_screen::$5 )
[56] (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0
[57] call sqr
[58] (word) sqr::return#2 ← (word) sqr::return#0
to:init_dist_screen::@10
init_dist_screen::@10: scope:[init_dist_screen] from init_dist_screen::@4
[59] (word) init_dist_screen::yds#0 ← (word) sqr::return#2
to:init_dist_screen::@5
init_dist_screen::@5: scope:[init_dist_screen] from init_dist_screen::@10 init_dist_screen::@12
[60] (byte) init_dist_screen::xb#2 ← phi( init_dist_screen::@10/(byte) $27 init_dist_screen::@12/(byte) init_dist_screen::xb#1 )
[60] (byte) init_dist_screen::x#2 ← phi( init_dist_screen::@10/(byte) 0 init_dist_screen::@12/(byte) init_dist_screen::x#1 )
[61] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1
[62] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@6
to:init_dist_screen::@7
init_dist_screen::@7: scope:[init_dist_screen] from init_dist_screen::@5
[63] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0
to:init_dist_screen::@8
init_dist_screen::@8: scope:[init_dist_screen] from init_dist_screen::@6 init_dist_screen::@7
[64] (byte) init_dist_screen::xd#0 ← phi( init_dist_screen::@6/(byte~) init_dist_screen::$15 init_dist_screen::@7/(byte~) init_dist_screen::$13 )
[65] (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0
[66] call sqr
[67] (word) sqr::return#3 ← (word) sqr::return#0
to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen] from init_dist_screen::@8
[68] (word) init_dist_screen::xds#0 ← (word) sqr::return#3
[69] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0
[70] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0
[71] call sqrt
[72] (byte) sqrt::return#2 ← (byte) sqrt::return#0
to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen] from init_dist_screen::@11
[73] (byte) init_dist_screen::d#0 ← (byte) sqrt::return#2
[74] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0
[75] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0
[76] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
[77] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
[78] (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#2
[79] (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#2
[80] if((byte) init_dist_screen::x#1<(byte) $13+(byte) 1) goto init_dist_screen::@5
to:init_dist_screen::@9
init_dist_screen::@9: scope:[init_dist_screen] from init_dist_screen::@12
[81] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28
[82] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28
[83] (byte) init_dist_screen::y#1 ← ++ (byte) init_dist_screen::y#10
[84] if((byte) init_dist_screen::y#1!=(byte) $d) goto init_dist_screen::@1
to:init_dist_screen::@return
init_dist_screen::@return: scope:[init_dist_screen] from init_dist_screen::@9
[85] return
to:@return
init_dist_screen::@6: scope:[init_dist_screen] from init_dist_screen::@5
[47] (byte~) init_dist_screen::$15 ← (byte) init_dist_screen::x2#0 - (byte) $27
[86] (byte~) init_dist_screen::$15 ← (byte) init_dist_screen::x2#0 - (byte) $27
to:init_dist_screen::@8
init_dist_screen::@2: scope:[init_dist_screen] from init_dist_screen::@1
[48] (byte~) init_dist_screen::$7 ← (byte) init_dist_screen::y2#0 - (byte) $18
[87] (byte~) init_dist_screen::$7 ← (byte) init_dist_screen::y2#0 - (byte) $18
to:init_dist_screen::@4
sqrt: scope:[sqrt] from init_dist_screen::@11
[49] (word) bsearch16u::key#0 ← (word) sqrt::val#0
[50] call bsearch16u
[51] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
[88] (word) bsearch16u::key#0 ← (word) sqrt::val#0
[89] call bsearch16u
[90] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
to:sqrt::@1
sqrt::@1: scope:[sqrt] from sqrt
[52] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3
[53] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1
[54] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1
[55] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1
[91] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3
[92] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1
[93] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1
[94] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1
to:sqrt::@return
sqrt::@return: scope:[sqrt] from sqrt::@1
[56] return
[95] return
to:@return
bsearch16u: scope:[bsearch16u] from sqrt
[57] phi()
[96] phi()
to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u] from bsearch16u bsearch16u::@7
[58] (word*) bsearch16u::items#2 ← phi( bsearch16u/(const word*) SQUARES#1 bsearch16u::@7/(word*) bsearch16u::items#8 )
[58] (byte) bsearch16u::num#3 ← phi( bsearch16u/(const byte) NUM_SQUARES#3 bsearch16u::@7/(byte) bsearch16u::num#0 )
[59] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4
[97] (word*) bsearch16u::items#2 ← phi( bsearch16u/(const word*) SQUARES#1 bsearch16u::@7/(word*) bsearch16u::items#8 )
[97] (byte) bsearch16u::num#3 ← phi( bsearch16u/(const byte) NUM_SQUARES#3 bsearch16u::@7/(byte) bsearch16u::num#0 )
[98] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4
to:bsearch16u::@5
bsearch16u::@5: scope:[bsearch16u] from bsearch16u::@3
[60] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2
[99] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2
to:bsearch16u::@1
bsearch16u::@1: scope:[bsearch16u] from bsearch16u::@5
[61] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD
[100] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD
to:bsearch16u::@2
bsearch16u::@2: scope:[bsearch16u] from bsearch16u::@1 bsearch16u::@5
[62] (word*) bsearch16u::return#2 ← phi( bsearch16u::@5/(word*) bsearch16u::items#2 bsearch16u::@1/(word*~) bsearch16u::$2 )
[101] (word*) bsearch16u::return#2 ← phi( bsearch16u::@5/(word*) bsearch16u::items#2 bsearch16u::@1/(word*~) bsearch16u::$2 )
to:bsearch16u::@return
bsearch16u::@return: scope:[bsearch16u] from bsearch16u::@2 bsearch16u::@8
[63] (word*) bsearch16u::return#1 ← phi( bsearch16u::@8/(word*~) bsearch16u::return#6 bsearch16u::@2/(word*) bsearch16u::return#2 )
[64] return
[102] (word*) bsearch16u::return#1 ← phi( bsearch16u::@8/(word*~) bsearch16u::return#6 bsearch16u::@2/(word*) bsearch16u::return#2 )
[103] return
to:@return
bsearch16u::@4: scope:[bsearch16u] from bsearch16u::@3
[65] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1
[66] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1
[67] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16
[68] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0)
[69] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6
[104] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1
[105] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1
[106] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16
[107] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0)
[108] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6
to:bsearch16u::@8
bsearch16u::@8: scope:[bsearch16u] from bsearch16u::@4
[70] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0
[109] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0
to:bsearch16u::@return
bsearch16u::@6: scope:[bsearch16u] from bsearch16u::@4
[71] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7
[110] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7
to:bsearch16u::@9
bsearch16u::@9: scope:[bsearch16u] from bsearch16u::@6
[72] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD
[73] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3
[111] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD
[112] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3
to:bsearch16u::@7
bsearch16u::@7: scope:[bsearch16u] from bsearch16u::@6 bsearch16u::@9
[74] (word*) bsearch16u::items#8 ← phi( bsearch16u::@9/(word*) bsearch16u::items#0 bsearch16u::@6/(word*) bsearch16u::items#2 )
[74] (byte) bsearch16u::num#5 ← phi( bsearch16u::@9/(byte) bsearch16u::num#1 bsearch16u::@6/(byte) bsearch16u::num#3 )
[75] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1
[113] (word*) bsearch16u::items#8 ← phi( bsearch16u::@9/(word*) bsearch16u::items#0 bsearch16u::@6/(word*) bsearch16u::items#2 )
[113] (byte) bsearch16u::num#5 ← phi( bsearch16u::@9/(byte) bsearch16u::num#1 bsearch16u::@6/(byte) bsearch16u::num#3 )
[114] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1
to:bsearch16u::@3
sqr: scope:[sqr] from init_dist_screen::@4 init_dist_screen::@8
[76] (byte) sqr::val#2 ← phi( init_dist_screen::@4/(byte) sqr::val#0 init_dist_screen::@8/(byte) sqr::val#1 )
[77] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1
[78] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0)
[115] (byte) sqr::val#2 ← phi( init_dist_screen::@4/(byte) sqr::val#0 init_dist_screen::@8/(byte) sqr::val#1 )
[116] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1
[117] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0)
to:sqr::@return
sqr::@return: scope:[sqr] from sqr
[79] return
[118] return
to:@return
init_squares: scope:[init_squares] from init_dist_screen
[80] phi()
[81] call malloc
[119] phi()
[120] call malloc
to:init_squares::@1
init_squares::@1: scope:[init_squares] from init_squares init_squares::@1
[82] (byte) init_squares::i#2 ← phi( init_squares::@1/(byte) init_squares::i#1 init_squares/(byte) 0 )
[82] (word*) init_squares::squares#2 ← phi( init_squares::@1/(word*) init_squares::squares#1 init_squares/(const word*) SQUARES#1 )
[82] (word) init_squares::sqr#2 ← phi( init_squares::@1/(word) init_squares::sqr#1 init_squares/(byte) 0 )
[83] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2
[84] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD
[85] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1
[86] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1
[87] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4
[88] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2
[89] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#3-(byte) 1+(byte) 1) goto init_squares::@1
[121] (byte) init_squares::i#2 ← phi( init_squares::@1/(byte) init_squares::i#1 init_squares/(byte) 0 )
[121] (word*) init_squares::squares#2 ← phi( init_squares::@1/(word*) init_squares::squares#1 init_squares/(const word*) SQUARES#1 )
[121] (word) init_squares::sqr#2 ← phi( init_squares::@1/(word) init_squares::sqr#1 init_squares/(byte) 0 )
[122] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2
[123] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD
[124] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1
[125] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1
[126] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4
[127] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2
[128] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#3-(byte) 1+(byte) 1) goto init_squares::@1
to:init_squares::@return
init_squares::@return: scope:[init_squares] from init_squares::@1
[90] return
[129] return
to:@return
malloc: scope:[malloc] from init_squares
[91] phi()
[130] phi()
to:malloc::@return
malloc::@return: scope:[malloc] from malloc
[92] return
[131] return
to:@return
clock_start: scope:[clock_start] from main::@1
[132] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0
[133] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0
[134] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff
[135] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0
[136] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0
to:clock_start::@return
clock_start::@return: scope:[clock_start] from clock_start
[137] return
to:@return
init_font_hex: scope:[init_font_hex] from main
[93] phi()
[138] phi()
to:init_font_hex::@1
init_font_hex::@1: scope:[init_font_hex] from init_font_hex init_font_hex::@5
[94] (byte) init_font_hex::c#6 ← phi( init_font_hex/(byte) 0 init_font_hex::@5/(byte) init_font_hex::c#1 )
[94] (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 )
[94] (byte*) init_font_hex::charset#5 ← phi( init_font_hex/(const byte*) CHARSET#0 init_font_hex::@5/(byte*) init_font_hex::charset#0 )
[139] (byte) init_font_hex::c#6 ← phi( init_font_hex/(byte) 0 init_font_hex::@5/(byte) init_font_hex::c#1 )
[139] (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 )
[139] (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
[95] (byte) init_font_hex::c1#4 ← phi( init_font_hex::@1/(byte) 0 init_font_hex::@4/(byte) init_font_hex::c1#1 )
[95] (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 )
[95] (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 )
[96] *((byte*) init_font_hex::charset#2) ← (byte) 0
[140] (byte) init_font_hex::c1#4 ← phi( init_font_hex::@1/(byte) 0 init_font_hex::@4/(byte) init_font_hex::c1#1 )
[140] (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 )
[140] (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 )
[141] *((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
[97] (byte) init_font_hex::idx#5 ← phi( init_font_hex::@2/(byte) 1 init_font_hex::@3/(byte) init_font_hex::idx#2 )
[97] (byte) init_font_hex::i#2 ← phi( init_font_hex::@2/(byte) 0 init_font_hex::@3/(byte) init_font_hex::i#1 )
[98] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4
[99] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1
[100] (byte~) init_font_hex::$2 ← (byte~) init_font_hex::$0 | (byte~) init_font_hex::$1
[101] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#5) ← (byte~) init_font_hex::$2
[102] (byte) init_font_hex::idx#2 ← ++ (byte) init_font_hex::idx#5
[103] (byte) init_font_hex::i#1 ← ++ (byte) init_font_hex::i#2
[104] if((byte) init_font_hex::i#1!=(byte) 5) goto init_font_hex::@3
[142] (byte) init_font_hex::idx#5 ← phi( init_font_hex::@2/(byte) 1 init_font_hex::@3/(byte) init_font_hex::idx#2 )
[142] (byte) init_font_hex::i#2 ← phi( init_font_hex::@2/(byte) 0 init_font_hex::@3/(byte) init_font_hex::i#1 )
[143] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4
[144] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1
[145] (byte~) init_font_hex::$2 ← (byte~) init_font_hex::$0 | (byte~) init_font_hex::$1
[146] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#5) ← (byte~) init_font_hex::$2
[147] (byte) init_font_hex::idx#2 ← ++ (byte) init_font_hex::idx#5
[148] (byte) init_font_hex::i#1 ← ++ (byte) init_font_hex::i#2
[149] 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
[105] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0
[106] (byte) init_font_hex::idx#3 ← ++ (byte) init_font_hex::idx#2
[107] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0
[108] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5
[109] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8
[110] (byte) init_font_hex::c1#1 ← ++ (byte) init_font_hex::c1#4
[111] if((byte) init_font_hex::c1#1!=(byte) $10) goto init_font_hex::@2
[150] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0
[151] (byte) init_font_hex::idx#3 ← ++ (byte) init_font_hex::idx#2
[152] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0
[153] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5
[154] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8
[155] (byte) init_font_hex::c1#1 ← ++ (byte) init_font_hex::c1#4
[156] 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
[112] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5
[113] (byte) init_font_hex::c#1 ← ++ (byte) init_font_hex::c#6
[114] if((byte) init_font_hex::c#1!=(byte) $10) goto init_font_hex::@1
[157] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5
[158] (byte) init_font_hex::c#1 ← ++ (byte) init_font_hex::c#6
[159] 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
[115] return
[160] return
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,22 @@
(label) @end
(byte*) CHARSET
(const byte*) CHARSET#0 CHARSET = (byte*) 8192
(dword*) CIA2_TIMER_AB
(const dword*) CIA2_TIMER_AB#0 CIA2_TIMER_AB = (dword*) 56580
(byte*) CIA2_TIMER_A_CONTROL
(const byte*) CIA2_TIMER_A_CONTROL#0 CIA2_TIMER_A_CONTROL = (byte*) 56590
(byte*) CIA2_TIMER_B_CONTROL
(const byte*) CIA2_TIMER_B_CONTROL#0 CIA2_TIMER_B_CONTROL = (byte*) 56591
(byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES
(byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40
(byte) CIA_TIMER_CONTROL_CONTINUOUS
(const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 CIA_TIMER_CONTROL_CONTINUOUS = (byte) 0
(byte) CIA_TIMER_CONTROL_START
(const byte) CIA_TIMER_CONTROL_START#0 CIA_TIMER_CONTROL_START = (byte) 1
(byte) CIA_TIMER_CONTROL_STOP
(dword) CLOCKS_PER_INIT
(const dword) CLOCKS_PER_INIT#0 CLOCKS_PER_INIT = (byte) $12
(byte*) D018
(const byte*) D018#0 D018 = (byte*) 53272
(byte[]) FONT_HEX_PROTO
@ -18,7 +34,7 @@
(const word*) SQUARES#1 SQUARES = (word*)(const void*) malloc::return#0
(word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num)
(byte~) bsearch16u::$16 reg byte a 2002.0
(word*~) bsearch16u::$2 $2 zp ZP_WORD:10 4.0
(word*~) bsearch16u::$2 $2 zp ZP_WORD:18 4.0
(byte~) bsearch16u::$6 reg byte a 2002.0
(label) bsearch16u::@1
(label) bsearch16u::@2
@ -31,25 +47,32 @@
(label) bsearch16u::@9
(label) bsearch16u::@return
(word*) bsearch16u::items
(word*) bsearch16u::items#0 items zp ZP_WORD:10 1001.0
(word*) bsearch16u::items#2 items zp ZP_WORD:10 334.33333333333337
(word*) bsearch16u::items#8 items zp ZP_WORD:10 1501.5
(word*) bsearch16u::items#0 items zp ZP_WORD:18 1001.0
(word*) bsearch16u::items#2 items zp ZP_WORD:18 334.33333333333337
(word*) bsearch16u::items#8 items zp ZP_WORD:18 1501.5
(word) bsearch16u::key
(word) bsearch16u::key#0 key zp ZP_WORD:27 0.2857142857142857
(word) bsearch16u::key#0 key zp ZP_WORD:39 0.2857142857142857
(byte) bsearch16u::num
(byte) bsearch16u::num#0 reg byte x 2002.0
(byte) bsearch16u::num#1 reg byte x 2002.0
(byte) bsearch16u::num#3 reg byte x 556.1111111111111
(byte) bsearch16u::num#5 reg byte x 3003.0
(word*) bsearch16u::pivot
(word*) bsearch16u::pivot#0 pivot zp ZP_WORD:29 501.0
(word*) bsearch16u::pivot#0 pivot zp ZP_WORD:41 501.0
(signed word) bsearch16u::result
(signed word) bsearch16u::result#0 result zp ZP_WORD:31 1501.5
(signed word) bsearch16u::result#0 result zp ZP_WORD:43 1501.5
(word*) bsearch16u::return
(word*) bsearch16u::return#1 return zp ZP_WORD:10 2.0
(word*) bsearch16u::return#2 return zp ZP_WORD:10 6.0
(word*) bsearch16u::return#3 return zp ZP_WORD:10 4.0
(word*~) bsearch16u::return#6 return zp ZP_WORD:10 4.0
(word*) bsearch16u::return#1 return zp ZP_WORD:18 2.0
(word*) bsearch16u::return#2 return zp ZP_WORD:18 6.0
(word*) bsearch16u::return#3 return zp ZP_WORD:18 4.0
(word*~) bsearch16u::return#6 return zp ZP_WORD:18 4.0
(dword()) clock()
(label) clock::@return
(dword) clock::return
(dword) clock::return#0 return zp ZP_DWORD:33 1.3333333333333333
(dword) clock::return#2 return zp ZP_DWORD:33 4.0
(void()) clock_start()
(label) clock_start::@return
(byte*) heap_head
(void()) init_dist_screen((byte*) init_dist_screen::screen)
(byte~) init_dist_screen::$13 reg byte a 202.0
@ -72,37 +95,37 @@
(byte) init_dist_screen::d
(byte) init_dist_screen::d#0 reg byte a 126.25
(word) init_dist_screen::ds
(word) init_dist_screen::ds#0 ds zp ZP_WORD:27 202.0
(word) init_dist_screen::ds#0 ds zp ZP_WORD:39 202.0
(byte*) init_dist_screen::screen
(byte*) init_dist_screen::screen_bottomline
(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:5 7.333333333333333
(byte*) init_dist_screen::screen_bottomline#10 screen_bottomline zp ZP_WORD:5 6.787878787878788
(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:14 7.333333333333333
(byte*) init_dist_screen::screen_bottomline#10 screen_bottomline zp ZP_WORD:14 6.787878787878788
(byte*) init_dist_screen::screen_topline
(byte*) init_dist_screen::screen_topline#1 screen_topline zp ZP_WORD:3 5.5
(byte*) init_dist_screen::screen_topline#10 screen_topline zp ZP_WORD:3 7.0
(byte*) init_dist_screen::screen_topline#1 screen_topline zp ZP_WORD:12 5.5
(byte*) init_dist_screen::screen_topline#10 screen_topline zp ZP_WORD:12 7.0
(byte) init_dist_screen::x
(byte) init_dist_screen::x#1 x zp ZP_BYTE:7 101.0
(byte) init_dist_screen::x#2 x zp ZP_BYTE:7 26.578947368421055
(byte) init_dist_screen::x#1 x zp ZP_BYTE:16 101.0
(byte) init_dist_screen::x#2 x zp ZP_BYTE:16 26.578947368421055
(byte) init_dist_screen::x2
(byte) init_dist_screen::x2#0 reg byte a 202.0
(byte) init_dist_screen::xb
(byte) init_dist_screen::xb#1 xb zp ZP_BYTE:9 101.0
(byte) init_dist_screen::xb#2 xb zp ZP_BYTE:9 20.2
(byte) init_dist_screen::xb#1 xb zp ZP_BYTE:17 101.0
(byte) init_dist_screen::xb#2 xb zp ZP_BYTE:17 20.2
(byte) init_dist_screen::xd
(byte) init_dist_screen::xd#0 reg byte a 303.0
(word) init_dist_screen::xds
(word) init_dist_screen::xds#0 xds zp ZP_WORD:27 202.0
(word) init_dist_screen::xds#0 xds zp ZP_WORD:39 202.0
(byte) init_dist_screen::y
(byte) init_dist_screen::y#1 y zp ZP_BYTE:2 16.5
(byte) init_dist_screen::y#10 y zp ZP_BYTE:2 0.9705882352941178
(byte) init_dist_screen::y#1 y zp ZP_BYTE:11 16.5
(byte) init_dist_screen::y#10 y zp ZP_BYTE:11 0.9705882352941178
(byte) init_dist_screen::y2
(byte) init_dist_screen::y2#0 reg byte a 22.0
(byte) init_dist_screen::yd
(byte) init_dist_screen::yd#0 reg byte a 33.0
(word) init_dist_screen::yds
(word) init_dist_screen::yds#0 yds zp ZP_WORD:25 4.869565217391305
(word) init_dist_screen::yds#0 yds zp ZP_WORD:37 4.869565217391305
(void()) init_font_hex((byte*) init_font_hex::charset)
(byte~) init_font_hex::$0 $0 zp ZP_BYTE:33 1001.0
(byte~) init_font_hex::$0 $0 zp ZP_BYTE:45 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
@ -112,28 +135,28 @@
(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:18 16.5
(byte) init_font_hex::c#6 c zp ZP_BYTE:18 1.1578947368421053
(byte) init_font_hex::c#1 c zp ZP_BYTE:26 16.5
(byte) init_font_hex::c#6 c zp ZP_BYTE:26 1.1578947368421053
(byte) init_font_hex::c1
(byte) init_font_hex::c1#1 c1 zp ZP_BYTE:23 151.5
(byte) init_font_hex::c1#4 c1 zp ZP_BYTE:23 13.466666666666667
(byte) init_font_hex::c1#1 c1 zp ZP_BYTE:31 151.5
(byte) init_font_hex::c1#4 c1 zp ZP_BYTE:31 13.466666666666667
(byte*) init_font_hex::charset
(byte*) init_font_hex::charset#0 charset zp ZP_WORD:19 35.5
(byte*) init_font_hex::charset#2 charset zp ZP_WORD:19 108.35714285714285
(byte*) init_font_hex::charset#5 charset zp ZP_WORD:19 22.0
(byte*) init_font_hex::charset#0 charset zp ZP_WORD:27 35.5
(byte*) init_font_hex::charset#2 charset zp ZP_WORD:27 108.35714285714285
(byte*) init_font_hex::charset#5 charset zp ZP_WORD:27 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:24 551.0
(byte) init_font_hex::idx#2 idx zp ZP_BYTE:32 551.0
(byte) init_font_hex::idx#3 reg byte y 202.0
(byte) init_font_hex::idx#5 idx zp ZP_BYTE:24 600.5999999999999
(byte) init_font_hex::idx#5 idx zp ZP_BYTE:32 600.5999999999999
(byte*) init_font_hex::proto_hi
(byte*) init_font_hex::proto_hi#1 proto_hi zp ZP_WORD:16 7.333333333333333
(byte*) init_font_hex::proto_hi#6 proto_hi zp ZP_WORD:16 56.83333333333334
(byte*) init_font_hex::proto_hi#1 proto_hi zp ZP_WORD:24 7.333333333333333
(byte*) init_font_hex::proto_hi#6 proto_hi zp ZP_WORD:24 56.83333333333334
(byte*) init_font_hex::proto_lo
(byte*) init_font_hex::proto_lo#1 proto_lo zp ZP_WORD:21 50.5
(byte*) init_font_hex::proto_lo#4 proto_lo zp ZP_WORD:21 92.53846153846155
(byte*) init_font_hex::proto_lo#1 proto_lo zp ZP_WORD:29 50.5
(byte*) init_font_hex::proto_lo#4 proto_lo zp ZP_WORD:29 92.53846153846155
(void()) init_squares()
(byte~) init_squares::$3 reg byte a 22.0
(byte~) init_squares::$4 reg byte a 22.0
@ -143,14 +166,25 @@
(byte) init_squares::i#1 reg byte x 16.5
(byte) init_squares::i#2 reg byte x 5.5
(word) init_squares::sqr
(word) init_squares::sqr#1 sqr zp ZP_WORD:12 7.333333333333333
(word) init_squares::sqr#2 sqr zp ZP_WORD:12 6.6000000000000005
(word) init_squares::sqr#1 sqr zp ZP_WORD:20 7.333333333333333
(word) init_squares::sqr#2 sqr zp ZP_WORD:20 6.6000000000000005
(word*) init_squares::squares
(word*) init_squares::squares#1 squares zp ZP_WORD:14 3.6666666666666665
(word*) init_squares::squares#2 squares zp ZP_WORD:14 16.5
(word*) init_squares::squares#1 squares zp ZP_WORD:22 3.6666666666666665
(word*) init_squares::squares#2 squares zp ZP_WORD:22 16.5
(void()) main()
(dword~) main::$4 $4 zp ZP_DWORD:33 4.0
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@return
(byte*) main::BASE_CHARSET
(const byte*) main::BASE_CHARSET#0 BASE_CHARSET = (byte*) 4096
(byte*) main::BASE_SCREEN
(const byte*) main::BASE_SCREEN#0 BASE_SCREEN = (byte*) 1024
(dword) main::cyclecount
(dword) main::cyclecount#0 cyclecount zp ZP_DWORD:33 4.0
(label) main::toD0181
(word~) main::toD0181_$0
(number~) main::toD0181_$1
@ -165,72 +199,134 @@
(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
(label) main::toD0182
(word~) main::toD0182_$0
(number~) main::toD0182_$1
(number~) main::toD0182_$2
(number~) main::toD0182_$3
(word~) main::toD0182_$4
(byte~) main::toD0182_$5
(number~) main::toD0182_$6
(number~) main::toD0182_$7
(number~) main::toD0182_$8
(byte*) main::toD0182_gfx
(byte) main::toD0182_return
(const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) main::BASE_SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) main::BASE_CHARSET#0/(byte) 4&(byte) $f
(byte*) main::toD0182_screen
(void*()) malloc((word) malloc::size)
(label) malloc::@return
(byte*) malloc::mem
(void*) malloc::return
(const void*) malloc::return#0 return = (void*)(const byte*) HEAP_START#0
(word) malloc::size
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 reg byte a 4.0
(byte~) print_byte_at::$2 reg byte y 2.0
(label) print_byte_at::@1
(label) print_byte_at::@return
(byte*) print_byte_at::at
(byte*) print_byte_at::at#0 at zp ZP_WORD:4 4.0
(byte*) print_byte_at::at#1 at zp ZP_WORD:4 4.0
(byte*) print_byte_at::at#2 at zp ZP_WORD:4 1.3333333333333333
(byte) print_byte_at::b
(byte) print_byte_at::b#0 b zp ZP_BYTE:6 2.0
(byte) print_byte_at::b#1 b zp ZP_BYTE:6 2.0
(byte) print_byte_at::b#2 b zp ZP_BYTE:6 1.6
(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
(label) print_char_at::@return
(byte*) print_char_at::at
(byte*) print_char_at::at#0 at zp ZP_WORD:9 4.0
(byte*) print_char_at::at#1 at zp ZP_WORD:9 2.0
(byte*) print_char_at::at#2 at zp ZP_WORD:9 6.0
(byte) print_char_at::ch
(byte) print_char_at::ch#0 reg byte x 2.0
(byte) print_char_at::ch#1 reg byte x 4.0
(byte) print_char_at::ch#2 reg byte x 6.0
(void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at)
(label) print_dword_at::@1
(label) print_dword_at::@return
(byte*) print_dword_at::at
(dword) print_dword_at::dw
(dword) print_dword_at::dw#0 dw zp ZP_DWORD:33 2.0
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at)
(label) print_word_at::@1
(label) print_word_at::@return
(byte*) print_word_at::at
(byte*) print_word_at::at#2 at zp ZP_WORD:4 0.8
(word) print_word_at::w
(word) print_word_at::w#0 w zp ZP_WORD:2 4.0
(word) print_word_at::w#1 w zp ZP_WORD:2 4.0
(word) print_word_at::w#2 w zp ZP_WORD:2 2.0
(word()) sqr((byte) sqr::val)
(byte~) sqr::$0 reg byte a 4.0
(label) sqr::@return
(word) sqr::return
(word) sqr::return#0 return zp ZP_WORD:27 28.5
(word) sqr::return#2 return#2 zp ZP_WORD:25 22.0
(word) sqr::return#3 return zp ZP_WORD:27 202.0
(word) sqr::return#0 return zp ZP_WORD:39 28.5
(word) sqr::return#2 return#2 zp ZP_WORD:37 22.0
(word) sqr::return#3 return zp ZP_WORD:39 202.0
(byte) sqr::val
(byte) sqr::val#0 reg byte a 22.0
(byte) sqr::val#1 reg byte a 202.0
(byte) sqr::val#2 reg byte a 114.0
(byte()) sqrt((word) sqrt::val)
(word~) sqrt::$1 $1 zp ZP_WORD:10 2.0
(word~) sqrt::$3 $3 zp ZP_WORD:10 4.0
(word~) sqrt::$1 $1 zp ZP_WORD:18 2.0
(word~) sqrt::$3 $3 zp ZP_WORD:18 4.0
(label) sqrt::@1
(label) sqrt::@return
(word*) sqrt::found
(word*) sqrt::found#0 found zp ZP_WORD:10 4.0
(word*) sqrt::found#0 found zp ZP_WORD:18 4.0
(byte) sqrt::return
(byte) sqrt::return#0 reg byte a 34.33333333333333
(byte) sqrt::return#2 reg byte a 202.0
(byte) sqrt::sq
(word) sqrt::val
(word) sqrt::val#0 val zp ZP_WORD:27 103.0
(word) sqrt::val#0 val zp ZP_WORD:39 103.0
zp ZP_BYTE:2 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
zp ZP_WORD:3 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 ]
zp ZP_WORD:5 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 ]
zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ]
zp ZP_WORD:4 [ print_word_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ]
zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
zp ZP_WORD:9 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
zp ZP_BYTE:11 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
zp ZP_WORD:12 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 ]
zp ZP_WORD:14 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 ]
reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
zp ZP_BYTE:7 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
zp ZP_BYTE:9 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
zp ZP_BYTE:16 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
zp ZP_BYTE:17 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
reg byte a [ init_dist_screen::xd#0 init_dist_screen::$15 init_dist_screen::$13 ]
zp ZP_WORD:10 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 ]
zp ZP_WORD:18 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
reg byte a [ sqr::val#2 sqr::val#0 sqr::val#1 ]
zp ZP_WORD:12 [ init_squares::sqr#2 init_squares::sqr#1 ]
zp ZP_WORD:14 [ init_squares::squares#2 init_squares::squares#1 ]
zp ZP_WORD:20 [ init_squares::sqr#2 init_squares::sqr#1 ]
zp ZP_WORD:22 [ init_squares::squares#2 init_squares::squares#1 ]
reg byte x [ init_squares::i#2 init_squares::i#1 ]
zp ZP_WORD:16 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
zp ZP_BYTE:18 [ init_font_hex::c#6 init_font_hex::c#1 ]
zp ZP_WORD:19 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
zp ZP_WORD:21 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
zp ZP_BYTE:23 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
zp ZP_WORD:24 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
zp ZP_BYTE:26 [ init_font_hex::c#6 init_font_hex::c#1 ]
zp ZP_WORD:27 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
zp ZP_WORD:29 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
zp ZP_BYTE:31 [ 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:24 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
zp ZP_BYTE:32 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
zp ZP_DWORD:33 [ clock::return#2 main::$4 clock::return#0 main::cyclecount#0 print_dword_at::dw#0 ]
reg byte a [ print_byte_at::$0 ]
reg byte y [ print_byte_at::$2 ]
reg byte a [ init_dist_screen::y2#0 ]
zp ZP_WORD:25 [ sqr::return#2 init_dist_screen::yds#0 ]
zp ZP_WORD:37 [ sqr::return#2 init_dist_screen::yds#0 ]
reg byte a [ init_dist_screen::x2#0 ]
zp ZP_WORD:27 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
zp ZP_WORD:39 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
reg byte a [ sqrt::return#0 ]
reg byte a [ bsearch16u::$6 ]
reg byte a [ bsearch16u::$16 ]
zp ZP_WORD:29 [ bsearch16u::pivot#0 ]
zp ZP_WORD:31 [ bsearch16u::result#0 ]
zp ZP_WORD:41 [ bsearch16u::pivot#0 ]
zp ZP_WORD:43 [ bsearch16u::result#0 ]
reg byte a [ sqr::$0 ]
reg byte a [ init_squares::$3 ]
reg byte a [ init_squares::$4 ]
zp ZP_BYTE:33 [ init_font_hex::$0 ]
zp ZP_BYTE:45 [ 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 ]