diff --git a/src/test/kc/complex/medusa/medusa.kc b/src/test/kc/complex/medusa/medusa.kc index 23562d4f0..be7c667b6 100644 --- a/src/test/kc/complex/medusa/medusa.kc +++ b/src/test/kc/complex/medusa/medusa.kc @@ -4,20 +4,18 @@ import "c64" import "string" -byte* MEDUSA_SCREEN = 0x1000; -byte* MEDUSA_COLORS = 0x1400; - -byte* SCREEN = 0x0400; - -kickasm(pc MEDUSA_SCREEN, resource "medusas.prg" ) {{ +byte[1000] MEDUSA_SCREEN = kickasm(resource "medusas.prg" ) {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) -}} +}}; -kickasm(pc MEDUSA_COLORS, resource "medusac.prg" ) {{ + +byte[] MEDUSA_COLORS = kickasm(resource "medusac.prg" ) {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) -}} +}}; + +byte* SCREEN = 0x0400; void main() { *BGCOL = BLACK; diff --git a/src/test/kc/complex/tetris/test-sprites.kc b/src/test/kc/complex/tetris/test-sprites.kc index 21c5b34df..0b386c787 100644 --- a/src/test/kc/complex/tetris/test-sprites.kc +++ b/src/test/kc/complex/tetris/test-sprites.kc @@ -1,16 +1,13 @@ import "tetris-sprites" -byte* SIN = $1400; - -byte* SIN_SPRITE = $2800; - -kickasm(pc SIN) {{ +byte[256] SIN = kickasm {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } -}} +}}; +byte* SIN_SPRITE = $2800; kickasm(pc SIN_SPRITE) {{ .fill $40, $ff }} diff --git a/src/test/kc/examples/3d/3d.kc b/src/test/kc/examples/3d/3d.kc index 423f76c18..3267493e0 100644 --- a/src/test/kc/examples/3d/3d.kc +++ b/src/test/kc/examples/3d/3d.kc @@ -389,25 +389,22 @@ void rotate_matrix(signed byte x, signed byte y, signed byte z) { // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). // f(x) = >(( x * x )) -byte* mulf_sqr1 = $2400; -// g(x) = >((( 1 - x ) * ( 1 - x ))) -byte* mulf_sqr2 = $2600; - -kickasm(pc mulf_sqr1) {{ +byte[0x200] align(0x100) mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -}} +}}; -kickasm(pc mulf_sqr2) {{ +// g(x) = >((( 1 - x ) * ( 1 - x ))) +byte[0x200] align(0x100) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } -}} +}}; /* // Multiplication tables for seriously fast multiplication. @@ -454,9 +451,7 @@ kickasm(pc SPRITE, resource "balloon.png") {{ }} // Perspective multiplication table containing (d/(z0-z)[z] for each z-value -signed byte* PERSP_Z = $2800; - -kickasm(pc PERSP_Z) {{ +signed byte[0x100] align(0x100) PERSP_Z = kickasm {{ { .var d = 256.0 .var z0 = 6.0 @@ -469,17 +464,12 @@ kickasm(pc PERSP_Z) {{ } } } -}} +}}; // Sine and Cosine Tables // Angles: $00=0, $80=PI,$100=2*PI // Half Sine/Cosine: signed fixed [-$20;20] -signed byte* SINH = $2000; -signed byte* COSH = SINH+$40; // sin(x) = cos(x+PI/2) -// Quarter Sine/Cosine: signed fixed [-$10,$10] -signed byte* SINQ = $2200; -signed byte* COSQ = SINQ+$40; // sin(x) = cos(x+PI/2) -kickasm(pc SINH) {{ +signed byte[0x140] align(0x40) SINH = kickasm {{ { .var min = -$2000 .var max = $2000 @@ -489,8 +479,11 @@ kickasm(pc SINH) {{ .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } -}} -kickasm(pc SINQ) {{ +}}; +signed byte* COSH = SINH+$40; // sin(x) = cos(x+PI/2) + +// Quarter Sine/Cosine: signed fixed [-$10,$10] +signed byte[0x140] align(0x40) SINQ = kickasm {{ { .var min = -$1000 .var max = $1000 @@ -500,62 +493,62 @@ kickasm(pc SINQ) {{ .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } -}} +}}; +signed byte* COSQ = SINQ+$40; // sin(x) = cos(x+PI/2) // 16 bit Sine and Cosine Tables // Angles: $00=0, $80=PI,$100=2*PI // Half Sine/Cosine: signed fixed [-$1f,$1f] -byte* SINH_LO = $4000; +byte[0x140] align(0x40) SINH_LO = kickasm {{ + { + .var min = -$2000 + .var max = $2000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) + } + } +}}; byte* COSH_LO = SINH_LO+$40; // sin(x) = cos(x+PI/2) -byte* SINH_HI = $4200; -byte* COSH_HI = SINH_HI+$40; // sin(x) = cos(x+PI/2) -// Quarter Sine/Cosine: signed fixed [-$0f,$0f] -byte* SINQ_LO = $4400; -byte* COSQ_LO = SINQ_LO+$40; // sin(x) = cos(x+PI/2) -byte* SINQ_HI = $4600; -byte* COSQ_HI = SINQ_HI+$40; // sin(x) = cos(x+PI/2) -kickasm(pc SINH_LO) {{ - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } -}} -kickasm(pc SINH_HI) {{ - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } -}} -kickasm(pc SINQ_LO) {{ - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } -}} -kickasm(pc SINQ_HI) {{ - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } -}} + +byte[0x140] align(0x40) SINH_HI = kickasm {{ + { + .var min = -$2000 + .var max = $2000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) + } + } +}}; +byte* COSH_HI = SINH_HI+$40; // sin(x) = cos(x+PI/2) + +// Quarter Sine/Cosine: signed fixed [-$0f,$0f] +byte[0x140] align(0x40) SINQ_LO = kickasm {{ + { + .var min = -$1000 + .var max = $1000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) + } + } +}}; +byte* COSQ_LO = SINQ_LO+$40; // sin(x) = cos(x+PI/2) + +byte[0x140] align(0x40) SINQ_HI = kickasm {{ + { + .var min = -$1000 + .var max = $1000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) + } + } +}}; +byte* COSQ_HI = SINQ_HI+$40; // sin(x) = cos(x+PI/2) diff --git a/src/test/kc/examples/fastmultiply/fastmultiply8.kc b/src/test/kc/examples/fastmultiply/fastmultiply8.kc index 126f8c211..5ea22edc5 100644 --- a/src/test/kc/examples/fastmultiply/fastmultiply8.kc +++ b/src/test/kc/examples/fastmultiply/fastmultiply8.kc @@ -71,22 +71,20 @@ signed byte fmul8(signed byte a, signed byte b) { // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). // f(x) = >(( x * x )) -byte* mulf_sqr1 = $2000; -// g(x) = >((( 1 - x ) * ( 1 - x ))) -byte* mulf_sqr2 = $2200; - -kickasm(pc mulf_sqr1) {{ +byte[0x200] align(0x100) mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -}} +}}; -kickasm(pc mulf_sqr2) {{ + +// g(x) = >((( 1 - x ) * ( 1 - x ))) +byte[0x200] align(0x100) mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } -}} \ No newline at end of file +}}; \ No newline at end of file diff --git a/src/test/kc/examples/sinplotter/sine-plotter.kc b/src/test/kc/examples/sinplotter/sine-plotter.kc index 2af317e3f..cc332fc14 100644 --- a/src/test/kc/examples/sinplotter/sine-plotter.kc +++ b/src/test/kc/examples/sinplotter/sine-plotter.kc @@ -12,13 +12,11 @@ const word SIN_SIZE = 512; signed word[512] align($100) sin; -signed word* sin2 = $1400; - -kickasm(pc sin2) {{ +signed word[512] sin2 = kickasm {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } -}} +}}; void main() { asm { sei } // Disable normal interrupt diff --git a/src/test/ref/complex/medusa/medusa.asm b/src/test/ref/complex/medusa/medusa.asm index 19ade714c..258e22220 100644 --- a/src/test/ref/complex/medusa/medusa.asm +++ b/src/test/ref/complex/medusa/medusa.asm @@ -8,8 +8,6 @@ .label COLS = $d800 // The colors of the C64 .const BLACK = 0 - .label MEDUSA_SCREEN = $1000 - .label MEDUSA_COLORS = $1400 .label SCREEN = $400 main: { lda #BLACK @@ -76,11 +74,11 @@ memcpy: { !: jmp b1 } -.pc = MEDUSA_SCREEN "MEDUSA_SCREEN" - .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) +MEDUSA_SCREEN: +.var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) -.pc = MEDUSA_COLORS "MEDUSA_COLORS" - .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) +MEDUSA_COLORS: +.var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) diff --git a/src/test/ref/complex/medusa/medusa.cfg b/src/test/ref/complex/medusa/medusa.cfg index b430f8256..b506b219b 100644 --- a/src/test/ref/complex/medusa/medusa.cfg +++ b/src/test/ref/complex/medusa/medusa.cfg @@ -2,47 +2,39 @@ [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const byte*) MEDUSA_SCREEN#0) {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) - .fill fileScreen.getSize(), fileScreen.get(i) - }} - kickasm(location (const byte*) MEDUSA_COLORS#0) {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) - .fill fileCols.getSize(), fileCols.get(i) - }} - to:@2 -@2: scope:[] from @1 - [3] phi() - [4] call main + [1] phi() + [2] call main to:@end -@end: scope:[] from @2 - [5] phi() -main: scope:[main] from @2 - [6] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 - [7] call memcpy +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 + [5] call memcpy to:main::@2 main::@2: scope:[main] from main - [8] phi() - [9] call memcpy + [6] phi() + [7] call memcpy to:main::@1 main::@1: scope:[main] from main::@1 main::@2 - [10] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e + [8] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e to:main::@1 memcpy: scope:[memcpy] from main main::@2 - [11] (void*) memcpy::destination#2 ← phi( main/(void*)(const byte*) SCREEN#0 main::@2/(void*)(const byte*) COLS#0 ) - [11] (void*) memcpy::source#2 ← phi( main/(void*)(const byte*) MEDUSA_SCREEN#0 main::@2/(void*)(const byte*) MEDUSA_COLORS#0 ) - [12] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 - [13] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 - [14] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 + [9] (void*) memcpy::destination#2 ← phi( main/(void*)(const byte*) SCREEN#0 main::@2/(void*)(const byte*) COLS#0 ) + [9] (void*) memcpy::source#2 ← phi( main/(void*)(const byte[$3e8]) MEDUSA_SCREEN#0 main::@2/(void*)(const byte[]) MEDUSA_COLORS#0 ) + [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 + [11] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 + [12] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 to:memcpy::@1 memcpy::@1: scope:[memcpy] from memcpy memcpy::@2 - [15] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*~) memcpy::dst#4 memcpy::@2/(byte*) memcpy::dst#1 ) - [15] (byte*) memcpy::src#2 ← phi( memcpy/(byte*~) memcpy::src#4 memcpy::@2/(byte*) memcpy::src#1 ) - [16] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 + [13] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*~) memcpy::dst#4 memcpy::@2/(byte*) memcpy::dst#1 ) + [13] (byte*) memcpy::src#2 ← phi( memcpy/(byte*~) memcpy::src#4 memcpy::@2/(byte*) memcpy::src#1 ) + [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 to:memcpy::@return memcpy::@return: scope:[memcpy] from memcpy::@1 - [17] return + [15] return to:@return memcpy::@2: scope:[memcpy] from memcpy::@1 - [18] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) - [19] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 - [20] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 + [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) + [17] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 + [18] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 to:memcpy::@1 diff --git a/src/test/ref/complex/medusa/medusa.log b/src/test/ref/complex/medusa/medusa.log index 1993354ac..f967caa16 100644 --- a/src/test/ref/complex/medusa/medusa.log +++ b/src/test/ref/complex/medusa/medusa.log @@ -45,16 +45,12 @@ Adding pointer type conversion cast (void()**) HARDWARE_IRQ in (void()**) HARDWA Adding pointer type conversion cast to void pointer (byte*) memcpy::source in (byte*) memcpy::src ← (void*) memcpy::source Adding pointer type conversion cast to void pointer (byte*) memcpy::destination in (byte*) memcpy::dst ← (void*) memcpy::destination Adding pointer type conversion cast to void pointer (byte*) memset::str in (byte*) memset::dst ← (void*) memset::str -Adding pointer type conversion cast (byte*) MEDUSA_SCREEN in (byte*) MEDUSA_SCREEN ← (number) $1000 -Adding pointer type conversion cast (byte*) MEDUSA_COLORS in (byte*) MEDUSA_COLORS ← (number) $1400 Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number) $400 -Adding void pointer type conversion cast (void*) SCREEN in (void*~) main::$0 ← call memcpy (byte*) SCREEN (byte*) MEDUSA_SCREEN (number) $3e8 -Adding void pointer type conversion cast (void*) MEDUSA_SCREEN in (void*~) main::$0 ← call memcpy (void*)(byte*) SCREEN (byte*) MEDUSA_SCREEN (number) $3e8 -Adding void pointer type conversion cast (void*) COLS in (void*~) main::$1 ← call memcpy (byte*) COLS (byte*) MEDUSA_COLORS (number) $3e8 -Adding void pointer type conversion cast (void*) MEDUSA_COLORS in (void*~) main::$1 ← call memcpy (void*)(byte*) COLS (byte*) MEDUSA_COLORS (number) $3e8 +Adding void pointer type conversion cast (void*) SCREEN in (void*~) main::$0 ← call memcpy (byte*) SCREEN (byte[$3e8]) MEDUSA_SCREEN (number) $3e8 +Adding void pointer type conversion cast (void*) MEDUSA_SCREEN in (void*~) main::$0 ← call memcpy (void*)(byte*) SCREEN (byte[$3e8]) MEDUSA_SCREEN (number) $3e8 +Adding void pointer type conversion cast (void*) COLS in (void*~) main::$1 ← call memcpy (byte*) COLS (byte[]) MEDUSA_COLORS (number) $3e8 +Adding void pointer type conversion cast (void*) MEDUSA_COLORS in (void*~) main::$1 ← call memcpy (void*)(byte*) COLS (byte[]) MEDUSA_COLORS (number) $3e8 Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) -Identified constant variable (byte*) MEDUSA_SCREEN -Identified constant variable (byte*) MEDUSA_COLORS Identified constant variable (byte*) SCREEN Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Culled Empty Block (label) @1 @@ -116,27 +112,25 @@ memcpy::@return: scope:[memcpy] from memcpy::@3 return to:@return @8: scope:[] from @begin - (byte*) MEDUSA_SCREEN#0 ← ((byte*)) (number) $1000 - (byte*) MEDUSA_COLORS#0 ← ((byte*)) (number) $1400 - (byte*) SCREEN#0 ← ((byte*)) (number) $400 - kickasm(location (byte*) MEDUSA_SCREEN#0) {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) + (byte[$3e8]) MEDUSA_SCREEN#0 ← kickasm {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) }} - kickasm(location (byte*) MEDUSA_COLORS#0) {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) + (byte[]) MEDUSA_COLORS#0 ← kickasm {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) }} + (byte*) SCREEN#0 ← ((byte*)) (number) $400 to:@9 main: scope:[main] from @9 *((byte*) BGCOL#0) ← (byte) BLACK#0 (void*) memcpy::destination#0 ← (void*)(byte*) SCREEN#0 - (void*) memcpy::source#0 ← (void*)(byte*) MEDUSA_SCREEN#0 + (void*) memcpy::source#0 ← (void*)(byte[$3e8]) MEDUSA_SCREEN#0 (word) memcpy::num#0 ← (number) $3e8 call memcpy (void*) memcpy::return#2 ← (void*) memcpy::return#1 to:main::@7 main::@7: scope:[main] from main (void*) memcpy::destination#1 ← (void*)(byte*) COLS#0 - (void*) memcpy::source#1 ← (void*)(byte*) MEDUSA_COLORS#0 + (void*) memcpy::source#1 ← (void*)(byte[]) MEDUSA_COLORS#0 (word) memcpy::num#1 ← (number) $3e8 call memcpy (void*) memcpy::return#3 ← (void*) memcpy::return#1 @@ -172,10 +166,10 @@ SYMBOL TABLE SSA (byte) BLACK#0 (byte*) COLS (byte*) COLS#0 -(byte*) MEDUSA_COLORS -(byte*) MEDUSA_COLORS#0 -(byte*) MEDUSA_SCREEN -(byte*) MEDUSA_SCREEN#0 +(byte[]) MEDUSA_COLORS +(byte[]) MEDUSA_COLORS#0 +(byte[$3e8]) MEDUSA_SCREEN +(byte[$3e8]) MEDUSA_SCREEN#0 (byte*) SCREEN (byte*) SCREEN#0 (void()) main() @@ -241,8 +235,6 @@ Inlining cast (byte) BLACK#0 ← (unumber)(number) 0 Inlining cast (byte*) memcpy::src#0 ← (byte*)(void*) memcpy::source#2 Inlining cast (byte*) memcpy::dst#0 ← (byte*)(void*) memcpy::destination#2 Inlining cast (byte*~) memcpy::$0 ← (byte*)(void*) memcpy::source#2 -Inlining cast (byte*) MEDUSA_SCREEN#0 ← (byte*)(number) $1000 -Inlining cast (byte*) MEDUSA_COLORS#0 ← (byte*)(number) $1400 Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400 Inlining cast (word) memcpy::num#0 ← (unumber)(number) $3e8 Inlining cast (word) memcpy::num#1 ← (unumber)(number) $3e8 @@ -250,8 +242,6 @@ Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 55296 Simplifying constant integer cast 0 -Simplifying constant pointer cast (byte*) 4096 -Simplifying constant pointer cast (byte*) 5120 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3e8 Simplifying constant integer cast $3e8 @@ -281,25 +271,29 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) BGCOL#0 = (byte*) 53281 Constant (const byte*) COLS#0 = (byte*) 55296 Constant (const byte) BLACK#0 = 0 -Constant (const byte*) MEDUSA_SCREEN#0 = (byte*) 4096 -Constant (const byte*) MEDUSA_COLORS#0 = (byte*) 5120 +Constant (const byte[$3e8]) MEDUSA_SCREEN#0 = kickasm {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) + .fill fileScreen.getSize(), fileScreen.get(i) + }} +Constant (const byte[]) MEDUSA_COLORS#0 = kickasm {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) + .fill fileCols.getSize(), fileCols.get(i) + }} Constant (const byte*) SCREEN#0 = (byte*) 1024 Constant (const word) memcpy::num#0 = $3e8 Constant (const word) memcpy::num#1 = $3e8 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (void*)SCREEN#0 in [27] (void*) memcpy::destination#0 ← (void*)(const byte*) SCREEN#0 -Constant value identified (void*)MEDUSA_SCREEN#0 in [28] (void*) memcpy::source#0 ← (void*)(const byte*) MEDUSA_SCREEN#0 -Constant value identified (void*)COLS#0 in [32] (void*) memcpy::destination#1 ← (void*)(const byte*) COLS#0 -Constant value identified (void*)MEDUSA_COLORS#0 in [33] (void*) memcpy::source#1 ← (void*)(const byte*) MEDUSA_COLORS#0 +Constant value identified (void*)SCREEN#0 in [25] (void*) memcpy::destination#0 ← (void*)(const byte*) SCREEN#0 +Constant value identified (void*)MEDUSA_SCREEN#0 in [26] (void*) memcpy::source#0 ← (void*)(const byte[$3e8]) MEDUSA_SCREEN#0 +Constant value identified (void*)COLS#0 in [30] (void*) memcpy::destination#1 ← (void*)(const byte*) COLS#0 +Constant value identified (void*)MEDUSA_COLORS#0 in [31] (void*) memcpy::source#1 ← (void*)(const byte[]) MEDUSA_COLORS#0 Successful SSA optimization Pass2ConstantValues -if() condition always true - replacing block destination [37] if(true) goto main::@2 +if() condition always true - replacing block destination [35] if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs -Eliminating unused variable (void*) memcpy::return#2 and assignment [17] (void*) memcpy::return#2 ← (void*) memcpy::destination#2 -Eliminating unused variable (void*) memcpy::return#3 and assignment [21] (void*) memcpy::return#3 ← (void*) memcpy::destination#2 +Eliminating unused variable (void*) memcpy::return#2 and assignment [15] (void*) memcpy::return#2 ← (void*) memcpy::destination#2 +Eliminating unused variable (void*) memcpy::return#3 and assignment [19] (void*) memcpy::return#3 ← (void*) memcpy::destination#2 Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks -Constant right-side identified [20] (byte*~) main::$2 ← (const byte*) SCREEN#0 + (word) $3e7 +Constant right-side identified [18] (byte*~) main::$2 ← (const byte*) SCREEN#0 + (word) $3e7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const void*) memcpy::destination#0 = (void*)SCREEN#0 Constant (const void*) memcpy::source#0 = (void*)MEDUSA_SCREEN#0 @@ -319,15 +313,16 @@ Inlining constant with var siblings (const void*) memcpy::destination#1 Inlining constant with var siblings (const void*) memcpy::source#1 Constant inlined memcpy::num#1 = (word) $3e8 Constant inlined memcpy::num#0 = (word) $3e8 -Constant inlined memcpy::source#1 = (void*)(const byte*) MEDUSA_COLORS#0 +Constant inlined memcpy::source#1 = (void*)(const byte[]) MEDUSA_COLORS#0 Constant inlined main::$2 = (const byte*) SCREEN#0+(word) $3e7 Constant inlined memcpy::destination#0 = (void*)(const byte*) SCREEN#0 Constant inlined memcpy::destination#1 = (void*)(const byte*) COLS#0 -Constant inlined memcpy::source#0 = (void*)(const byte*) MEDUSA_SCREEN#0 +Constant inlined memcpy::source#0 = (void*)(const byte[$3e8]) MEDUSA_SCREEN#0 Successful SSA optimization Pass2ConstantInlining Identical Phi Values (word) memcpy::num#2 (word) $3e8 Successful SSA optimization Pass2IdenticalPhiElimination Adding NOP phi() at start of @begin +Adding NOP phi() at start of @8 Adding NOP phi() at start of @9 Adding NOP phi() at start of @10 Adding NOP phi() at start of @end @@ -336,23 +331,23 @@ Adding NOP phi() at start of main::@8 Adding NOP phi() at start of main::@1 Adding NOP phi() at start of memcpy::@3 CALL GRAPH -Calls in [] to main:4 -Calls in [main] to memcpy:8 memcpy:10 +Calls in [] to main:3 +Calls in [main] to memcpy:7 memcpy:9 Created 4 initial phi equivalence classes -Coalesced [25] memcpy::src#5 ← memcpy::src#1 -Coalesced [26] memcpy::dst#5 ← memcpy::dst#1 +Coalesced [24] memcpy::src#5 ← memcpy::src#1 +Coalesced [25] memcpy::dst#5 ← memcpy::dst#1 Coalesced down to 4 phi equivalence classes +Culled Empty Block (label) @8 Culled Empty Block (label) @10 Culled Empty Block (label) main::@8 Culled Empty Block (label) main::@1 Culled Empty Block (label) memcpy::@3 -Renumbering block @8 to @1 -Renumbering block @9 to @2 +Renumbering block @9 to @1 Renumbering block main::@2 to main::@1 Renumbering block main::@7 to main::@2 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @1 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 @@ -361,49 +356,41 @@ FINAL CONTROL FLOW GRAPH [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const byte*) MEDUSA_SCREEN#0) {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) - .fill fileScreen.getSize(), fileScreen.get(i) - }} - kickasm(location (const byte*) MEDUSA_COLORS#0) {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) - .fill fileCols.getSize(), fileCols.get(i) - }} - to:@2 -@2: scope:[] from @1 - [3] phi() - [4] call main + [1] phi() + [2] call main to:@end -@end: scope:[] from @2 - [5] phi() -main: scope:[main] from @2 - [6] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 - [7] call memcpy +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 + [5] call memcpy to:main::@2 main::@2: scope:[main] from main - [8] phi() - [9] call memcpy + [6] phi() + [7] call memcpy to:main::@1 main::@1: scope:[main] from main::@1 main::@2 - [10] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e + [8] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e to:main::@1 memcpy: scope:[memcpy] from main main::@2 - [11] (void*) memcpy::destination#2 ← phi( main/(void*)(const byte*) SCREEN#0 main::@2/(void*)(const byte*) COLS#0 ) - [11] (void*) memcpy::source#2 ← phi( main/(void*)(const byte*) MEDUSA_SCREEN#0 main::@2/(void*)(const byte*) MEDUSA_COLORS#0 ) - [12] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 - [13] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 - [14] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 + [9] (void*) memcpy::destination#2 ← phi( main/(void*)(const byte*) SCREEN#0 main::@2/(void*)(const byte*) COLS#0 ) + [9] (void*) memcpy::source#2 ← phi( main/(void*)(const byte[$3e8]) MEDUSA_SCREEN#0 main::@2/(void*)(const byte[]) MEDUSA_COLORS#0 ) + [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 + [11] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 + [12] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 to:memcpy::@1 memcpy::@1: scope:[memcpy] from memcpy memcpy::@2 - [15] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*~) memcpy::dst#4 memcpy::@2/(byte*) memcpy::dst#1 ) - [15] (byte*) memcpy::src#2 ← phi( memcpy/(byte*~) memcpy::src#4 memcpy::@2/(byte*) memcpy::src#1 ) - [16] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 + [13] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*~) memcpy::dst#4 memcpy::@2/(byte*) memcpy::dst#1 ) + [13] (byte*) memcpy::src#2 ← phi( memcpy/(byte*~) memcpy::src#4 memcpy::@2/(byte*) memcpy::src#1 ) + [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 to:memcpy::@return memcpy::@return: scope:[memcpy] from memcpy::@1 - [17] return + [15] return to:@return memcpy::@2: scope:[memcpy] from memcpy::@1 - [18] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) - [19] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 - [20] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 + [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) + [17] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 + [18] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 to:memcpy::@1 @@ -411,8 +398,8 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL (byte) BLACK (byte*) COLS -(byte*) MEDUSA_COLORS -(byte*) MEDUSA_SCREEN +(byte[]) MEDUSA_COLORS +(byte[$3e8]) MEDUSA_SCREEN (byte*) SCREEN (void()) main() (void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num) @@ -465,76 +452,69 @@ INITIAL ASM .label COLS = $d800 // The colors of the C64 .const BLACK = 0 - .label MEDUSA_SCREEN = $1000 - .label MEDUSA_COLORS = $1400 .label SCREEN = $400 //SEG3 @begin bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 kickasm(location (const byte*) MEDUSA_SCREEN#0) {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) }} -//SEG6 kickasm(location (const byte*) MEDUSA_COLORS#0) {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) }} -//SEG7 [3] phi from @1 to @2 [phi:@1->@2] -b2_from_b1: - jmp b2 -//SEG8 @2 -b2: -//SEG9 [4] call main +//SEG6 [2] call main jsr main -//SEG10 [5] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: jmp bend -//SEG11 @end +//SEG8 @end bend: -//SEG12 main +//SEG9 main main: { - //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG14 [7] call memcpy - //SEG15 [11] phi from main to memcpy [phi:main->memcpy] + //SEG11 [5] call memcpy + //SEG12 [9] phi from main to memcpy [phi:main->memcpy] memcpy_from_main: - //SEG16 [11] phi (void*) memcpy::destination#2 = (void*)(const byte*) SCREEN#0 [phi:main->memcpy#0] -- pvoz1=pvoc1 + //SEG13 [9] phi (void*) memcpy::destination#2 = (void*)(const byte*) SCREEN#0 [phi:main->memcpy#0] -- pvoz1=pvoc1 lda #SCREEN sta memcpy.destination+1 - //SEG17 [11] phi (void*) memcpy::source#2 = (void*)(const byte*) MEDUSA_SCREEN#0 [phi:main->memcpy#1] -- pvoz1=pvoc1 + //SEG14 [9] phi (void*) memcpy::source#2 = (void*)(const byte[$3e8]) MEDUSA_SCREEN#0 [phi:main->memcpy#1] -- pvoz1=pvoc1 lda #MEDUSA_SCREEN sta memcpy.source+1 jsr memcpy - //SEG18 [8] phi from main to main::@2 [phi:main->main::@2] + //SEG15 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: jmp b2 - //SEG19 main::@2 + //SEG16 main::@2 b2: - //SEG20 [9] call memcpy - //SEG21 [11] phi from main::@2 to memcpy [phi:main::@2->memcpy] + //SEG17 [7] call memcpy + //SEG18 [9] phi from main::@2 to memcpy [phi:main::@2->memcpy] memcpy_from_b2: - //SEG22 [11] phi (void*) memcpy::destination#2 = (void*)(const byte*) COLS#0 [phi:main::@2->memcpy#0] -- pvoz1=pvoc1 + //SEG19 [9] phi (void*) memcpy::destination#2 = (void*)(const byte*) COLS#0 [phi:main::@2->memcpy#0] -- pvoz1=pvoc1 lda #COLS sta memcpy.destination+1 - //SEG23 [11] phi (void*) memcpy::source#2 = (void*)(const byte*) MEDUSA_COLORS#0 [phi:main::@2->memcpy#1] -- pvoz1=pvoc1 + //SEG20 [9] phi (void*) memcpy::source#2 = (void*)(const byte[]) MEDUSA_COLORS#0 [phi:main::@2->memcpy#1] -- pvoz1=pvoc1 lda #MEDUSA_COLORS sta memcpy.source+1 jsr memcpy jmp b1 - //SEG24 main::@1 + //SEG21 main::@1 b1: - //SEG25 [10] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e -- _deref_pbuc1=_deref_pbuc1_bxor_vbuc2 + //SEG22 [8] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e -- _deref_pbuc1=_deref_pbuc1_bxor_vbuc2 lda #$e eor SCREEN+$3e7 sta SCREEN+$3e7 jmp b1 } -//SEG26 memcpy +//SEG23 memcpy // Copy block of memory (forwards) // Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination. // memcpy(void* zeropage(4) destination, void* zeropage(2) source) @@ -544,7 +524,7 @@ memcpy: { .label src = 6 .label source = 2 .label destination = 4 - //SEG27 [12] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 + //SEG24 [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 lda source clc adc #<$3e8 @@ -552,25 +532,25 @@ memcpy: { lda source+1 adc #>$3e8 sta src_end+1 - //SEG28 [13] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 -- pbuz1=pbuz2 + //SEG25 [11] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 -- pbuz1=pbuz2 lda source sta src lda source+1 sta src+1 - //SEG29 [14] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 -- pbuz1=pbuz2 + //SEG26 [12] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 -- pbuz1=pbuz2 lda destination sta dst lda destination+1 sta dst+1 - //SEG30 [15] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1] + //SEG27 [13] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1] b1_from_memcpy: b1_from_b2: - //SEG31 [15] phi (byte*) memcpy::dst#2 = (byte*~) memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy - //SEG32 [15] phi (byte*) memcpy::src#2 = (byte*~) memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy + //SEG28 [13] phi (byte*) memcpy::dst#2 = (byte*~) memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy + //SEG29 [13] phi (byte*) memcpy::src#2 = (byte*~) memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy jmp b1 - //SEG33 memcpy::@1 + //SEG30 memcpy::@1 b1: - //SEG34 [16] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 + //SEG31 [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 lda src+1 cmp src_end+1 bne b2 @@ -578,47 +558,47 @@ memcpy: { cmp src_end bne b2 jmp breturn - //SEG35 memcpy::@return + //SEG32 memcpy::@return breturn: - //SEG36 [17] return + //SEG33 [15] return rts - //SEG37 memcpy::@2 + //SEG34 memcpy::@2 b2: - //SEG38 [18] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG35 [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - //SEG39 [19] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 + //SEG36 [17] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG40 [20] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 + //SEG37 [18] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: jmp b1_from_b2 } -//SEG41 File Data -.pc = MEDUSA_SCREEN "MEDUSA_SCREEN" - .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) +//SEG38 File Data +MEDUSA_SCREEN: +.var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) -.pc = MEDUSA_COLORS "MEDUSA_COLORS" - .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) +MEDUSA_COLORS: +.var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e [ ] ( main:4 [ ] ) always clobbers reg byte a -Statement [12] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:4::memcpy:7 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] main:4::memcpy:9 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ) always clobbers reg byte a -Statement [13] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:4::memcpy:7 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] main:4::memcpy:9 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ) always clobbers reg byte a -Statement [14] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:4::memcpy:7 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] main:4::memcpy:9 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ) always clobbers reg byte a -Statement [16] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:4::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:4::memcpy:9 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a -Statement [18] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:4::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:4::memcpy:9 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ( main:2::memcpy:5 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] main:2::memcpy:7 [ memcpy::source#2 memcpy::destination#2 memcpy::src_end#0 ] ) always clobbers reg byte a +Statement [11] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ( main:2::memcpy:5 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] main:2::memcpy:7 [ memcpy::destination#2 memcpy::src_end#0 memcpy::src#4 ] ) always clobbers reg byte a +Statement [12] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#4 memcpy::dst#4 ] ) always clobbers reg byte a +Statement [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a +Statement [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( main:2::memcpy:5 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] main:2::memcpy:7 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ) always clobbers reg byte a reg byte y Potential registers zp ZP_WORD:2 [ memcpy::source#2 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ memcpy::destination#2 ] : zp ZP_WORD:4 , Potential registers zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] : zp ZP_WORD:6 , @@ -630,9 +610,9 @@ Uplift Scope [memcpy] 35.5: zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#4 memcpy::s Uplift Scope [main] Uplift Scope [] -Uplifting [memcpy] best 6069 combination zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp ZP_WORD:10 [ memcpy::src_end#0 ] zp ZP_WORD:2 [ memcpy::source#2 ] zp ZP_WORD:4 [ memcpy::destination#2 ] -Uplifting [main] best 6069 combination -Uplifting [] best 6069 combination +Uplifting [memcpy] best 919 combination zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp ZP_WORD:10 [ memcpy::src_end#0 ] zp ZP_WORD:2 [ memcpy::source#2 ] zp ZP_WORD:4 [ memcpy::destination#2 ] +Uplifting [main] best 919 combination +Uplifting [] best 919 combination Coalescing zero page register with common assignment [ zp ZP_WORD:2 [ memcpy::source#2 ] ] with [ zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ memcpy::destination#2 ] ] with [ zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ] - score: 1 Allocated (was zp ZP_WORD:10) zp ZP_WORD:6 [ memcpy::src_end#0 ] @@ -651,76 +631,69 @@ ASSEMBLER BEFORE OPTIMIZATION .label COLS = $d800 // The colors of the C64 .const BLACK = 0 - .label MEDUSA_SCREEN = $1000 - .label MEDUSA_COLORS = $1400 .label SCREEN = $400 //SEG3 @begin bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 kickasm(location (const byte*) MEDUSA_SCREEN#0) {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) }} -//SEG6 kickasm(location (const byte*) MEDUSA_COLORS#0) {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) }} -//SEG7 [3] phi from @1 to @2 [phi:@1->@2] -b2_from_b1: - jmp b2 -//SEG8 @2 -b2: -//SEG9 [4] call main +//SEG6 [2] call main jsr main -//SEG10 [5] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: jmp bend -//SEG11 @end +//SEG8 @end bend: -//SEG12 main +//SEG9 main main: { - //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG14 [7] call memcpy - //SEG15 [11] phi from main to memcpy [phi:main->memcpy] + //SEG11 [5] call memcpy + //SEG12 [9] phi from main to memcpy [phi:main->memcpy] memcpy_from_main: - //SEG16 [11] phi (void*) memcpy::destination#2 = (void*)(const byte*) SCREEN#0 [phi:main->memcpy#0] -- pvoz1=pvoc1 + //SEG13 [9] phi (void*) memcpy::destination#2 = (void*)(const byte*) SCREEN#0 [phi:main->memcpy#0] -- pvoz1=pvoc1 lda #SCREEN sta memcpy.destination+1 - //SEG17 [11] phi (void*) memcpy::source#2 = (void*)(const byte*) MEDUSA_SCREEN#0 [phi:main->memcpy#1] -- pvoz1=pvoc1 + //SEG14 [9] phi (void*) memcpy::source#2 = (void*)(const byte[$3e8]) MEDUSA_SCREEN#0 [phi:main->memcpy#1] -- pvoz1=pvoc1 lda #MEDUSA_SCREEN sta memcpy.source+1 jsr memcpy - //SEG18 [8] phi from main to main::@2 [phi:main->main::@2] + //SEG15 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: jmp b2 - //SEG19 main::@2 + //SEG16 main::@2 b2: - //SEG20 [9] call memcpy - //SEG21 [11] phi from main::@2 to memcpy [phi:main::@2->memcpy] + //SEG17 [7] call memcpy + //SEG18 [9] phi from main::@2 to memcpy [phi:main::@2->memcpy] memcpy_from_b2: - //SEG22 [11] phi (void*) memcpy::destination#2 = (void*)(const byte*) COLS#0 [phi:main::@2->memcpy#0] -- pvoz1=pvoc1 + //SEG19 [9] phi (void*) memcpy::destination#2 = (void*)(const byte*) COLS#0 [phi:main::@2->memcpy#0] -- pvoz1=pvoc1 lda #COLS sta memcpy.destination+1 - //SEG23 [11] phi (void*) memcpy::source#2 = (void*)(const byte*) MEDUSA_COLORS#0 [phi:main::@2->memcpy#1] -- pvoz1=pvoc1 + //SEG20 [9] phi (void*) memcpy::source#2 = (void*)(const byte[]) MEDUSA_COLORS#0 [phi:main::@2->memcpy#1] -- pvoz1=pvoc1 lda #MEDUSA_COLORS sta memcpy.source+1 jsr memcpy jmp b1 - //SEG24 main::@1 + //SEG21 main::@1 b1: - //SEG25 [10] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e -- _deref_pbuc1=_deref_pbuc1_bxor_vbuc2 + //SEG22 [8] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e -- _deref_pbuc1=_deref_pbuc1_bxor_vbuc2 lda #$e eor SCREEN+$3e7 sta SCREEN+$3e7 jmp b1 } -//SEG26 memcpy +//SEG23 memcpy // Copy block of memory (forwards) // Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination. // memcpy(void* zeropage(4) destination, void* zeropage(2) source) @@ -730,7 +703,7 @@ memcpy: { .label src = 2 .label source = 2 .label destination = 4 - //SEG27 [12] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 + //SEG24 [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 lda source clc adc #<$3e8 @@ -738,17 +711,17 @@ memcpy: { lda source+1 adc #>$3e8 sta src_end+1 - //SEG28 [13] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 - //SEG29 [14] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 - //SEG30 [15] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1] + //SEG25 [11] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 + //SEG26 [12] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 + //SEG27 [13] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1] b1_from_memcpy: b1_from_b2: - //SEG31 [15] phi (byte*) memcpy::dst#2 = (byte*~) memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy - //SEG32 [15] phi (byte*) memcpy::src#2 = (byte*~) memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy + //SEG28 [13] phi (byte*) memcpy::dst#2 = (byte*~) memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy + //SEG29 [13] phi (byte*) memcpy::src#2 = (byte*~) memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy jmp b1 - //SEG33 memcpy::@1 + //SEG30 memcpy::@1 b1: - //SEG34 [16] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 + //SEG31 [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 lda src+1 cmp src_end+1 bne b2 @@ -756,42 +729,41 @@ memcpy: { cmp src_end bne b2 jmp breturn - //SEG35 memcpy::@return + //SEG32 memcpy::@return breturn: - //SEG36 [17] return + //SEG33 [15] return rts - //SEG37 memcpy::@2 + //SEG34 memcpy::@2 b2: - //SEG38 [18] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG35 [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y ldy #0 sta (dst),y - //SEG39 [19] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 + //SEG36 [17] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG40 [20] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 + //SEG37 [18] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: jmp b1_from_b2 } -//SEG41 File Data -.pc = MEDUSA_SCREEN "MEDUSA_SCREEN" - .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) +//SEG38 File Data +MEDUSA_SCREEN: +.var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) -.pc = MEDUSA_COLORS "MEDUSA_COLORS" - .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) +MEDUSA_COLORS: +.var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) ASSEMBLER OPTIMIZATIONS Removing instruction jmp b1 -Removing instruction jmp b2 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b1 @@ -801,10 +773,9 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b2 with b1 +Removing instruction b1_from_bbegin: Removing instruction b1: -Removing instruction b2_from_b1: -Removing instruction b2: -Removing instruction bend_from_b2: +Removing instruction bend_from_b1: Removing instruction b2_from_main: Removing instruction memcpy_from_b2: Removing instruction b1_from_memcpy: @@ -823,7 +794,6 @@ Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE (label) @1 -(label) @2 (label) @begin (label) @end (byte*) BGCOL @@ -832,10 +802,14 @@ FINAL SYMBOL TABLE (const byte) BLACK#0 BLACK = (byte) 0 (byte*) COLS (const byte*) COLS#0 COLS = (byte*) 55296 -(byte*) MEDUSA_COLORS -(const byte*) MEDUSA_COLORS#0 MEDUSA_COLORS = (byte*) 5120 -(byte*) MEDUSA_SCREEN -(const byte*) MEDUSA_SCREEN#0 MEDUSA_SCREEN = (byte*) 4096 +(byte[]) MEDUSA_COLORS +(const byte[]) MEDUSA_COLORS#0 MEDUSA_COLORS = kickasm {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) + .fill fileCols.getSize(), fileCols.get(i) + }} +(byte[$3e8]) MEDUSA_SCREEN +(const byte[$3e8]) MEDUSA_SCREEN#0 MEDUSA_SCREEN = kickasm {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) + .fill fileScreen.getSize(), fileScreen.get(i) + }} (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = (byte*) 1024 (void()) main() @@ -868,7 +842,7 @@ zp ZP_WORD:6 [ memcpy::src_end#0 ] FINAL ASSEMBLER -Score: 5917 +Score: 797 //SEG0 File Comments // Display MEDUSA PETSCII by Buzz_clik @@ -883,60 +857,55 @@ Score: 5917 .label COLS = $d800 // The colors of the C64 .const BLACK = 0 - .label MEDUSA_SCREEN = $1000 - .label MEDUSA_COLORS = $1400 .label SCREEN = $400 //SEG3 @begin -//SEG4 @1 -//SEG5 kickasm(location (const byte*) MEDUSA_SCREEN#0) {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) }} -//SEG6 kickasm(location (const byte*) MEDUSA_COLORS#0) {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) }} -//SEG7 [3] phi from @1 to @2 [phi:@1->@2] -//SEG8 @2 -//SEG9 [4] call main -//SEG10 [5] phi from @2 to @end [phi:@2->@end] -//SEG11 @end -//SEG12 main +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + //SEG10 [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 lda #BLACK sta BGCOL - //SEG14 [7] call memcpy - //SEG15 [11] phi from main to memcpy [phi:main->memcpy] - //SEG16 [11] phi (void*) memcpy::destination#2 = (void*)(const byte*) SCREEN#0 [phi:main->memcpy#0] -- pvoz1=pvoc1 + //SEG11 [5] call memcpy + //SEG12 [9] phi from main to memcpy [phi:main->memcpy] + //SEG13 [9] phi (void*) memcpy::destination#2 = (void*)(const byte*) SCREEN#0 [phi:main->memcpy#0] -- pvoz1=pvoc1 lda #SCREEN sta memcpy.destination+1 - //SEG17 [11] phi (void*) memcpy::source#2 = (void*)(const byte*) MEDUSA_SCREEN#0 [phi:main->memcpy#1] -- pvoz1=pvoc1 + //SEG14 [9] phi (void*) memcpy::source#2 = (void*)(const byte[$3e8]) MEDUSA_SCREEN#0 [phi:main->memcpy#1] -- pvoz1=pvoc1 lda #MEDUSA_SCREEN sta memcpy.source+1 jsr memcpy - //SEG18 [8] phi from main to main::@2 [phi:main->main::@2] - //SEG19 main::@2 - //SEG20 [9] call memcpy - //SEG21 [11] phi from main::@2 to memcpy [phi:main::@2->memcpy] - //SEG22 [11] phi (void*) memcpy::destination#2 = (void*)(const byte*) COLS#0 [phi:main::@2->memcpy#0] -- pvoz1=pvoc1 + //SEG15 [6] phi from main to main::@2 [phi:main->main::@2] + //SEG16 main::@2 + //SEG17 [7] call memcpy + //SEG18 [9] phi from main::@2 to memcpy [phi:main::@2->memcpy] + //SEG19 [9] phi (void*) memcpy::destination#2 = (void*)(const byte*) COLS#0 [phi:main::@2->memcpy#0] -- pvoz1=pvoc1 lda #COLS sta memcpy.destination+1 - //SEG23 [11] phi (void*) memcpy::source#2 = (void*)(const byte*) MEDUSA_COLORS#0 [phi:main::@2->memcpy#1] -- pvoz1=pvoc1 + //SEG20 [9] phi (void*) memcpy::source#2 = (void*)(const byte[]) MEDUSA_COLORS#0 [phi:main::@2->memcpy#1] -- pvoz1=pvoc1 lda #MEDUSA_COLORS sta memcpy.source+1 jsr memcpy - //SEG24 main::@1 + //SEG21 main::@1 b1: - //SEG25 [10] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e -- _deref_pbuc1=_deref_pbuc1_bxor_vbuc2 + //SEG22 [8] *((const byte*) SCREEN#0+(word) $3e7) ← *((const byte*) SCREEN#0+(word) $3e7) ^ (byte) $e -- _deref_pbuc1=_deref_pbuc1_bxor_vbuc2 lda #$e eor SCREEN+$3e7 sta SCREEN+$3e7 jmp b1 } -//SEG26 memcpy +//SEG23 memcpy // Copy block of memory (forwards) // Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination. // memcpy(void* zeropage(4) destination, void* zeropage(2) source) @@ -946,7 +915,7 @@ memcpy: { .label src = 2 .label source = 2 .label destination = 4 - //SEG27 [12] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 + //SEG24 [10] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 lda source clc adc #<$3e8 @@ -954,48 +923,48 @@ memcpy: { lda source+1 adc #>$3e8 sta src_end+1 - //SEG28 [13] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 - //SEG29 [14] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 - //SEG30 [15] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1] - //SEG31 [15] phi (byte*) memcpy::dst#2 = (byte*~) memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy - //SEG32 [15] phi (byte*) memcpy::src#2 = (byte*~) memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy - //SEG33 memcpy::@1 + //SEG25 [11] (byte*~) memcpy::src#4 ← (byte*)(void*) memcpy::source#2 + //SEG26 [12] (byte*~) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2 + //SEG27 [13] phi from memcpy memcpy::@2 to memcpy::@1 [phi:memcpy/memcpy::@2->memcpy::@1] + //SEG28 [13] phi (byte*) memcpy::dst#2 = (byte*~) memcpy::dst#4 [phi:memcpy/memcpy::@2->memcpy::@1#0] -- register_copy + //SEG29 [13] phi (byte*) memcpy::src#2 = (byte*~) memcpy::src#4 [phi:memcpy/memcpy::@2->memcpy::@1#1] -- register_copy + //SEG30 memcpy::@1 b1: - //SEG34 [16] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 + //SEG31 [14] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2 -- pbuz1_neq_pbuz2_then_la1 lda src+1 cmp src_end+1 bne b2 lda src cmp src_end bne b2 - //SEG35 memcpy::@return - //SEG36 [17] return + //SEG32 memcpy::@return + //SEG33 [15] return rts - //SEG37 memcpy::@2 + //SEG34 memcpy::@2 b2: - //SEG38 [18] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG35 [16] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (src),y sta (dst),y - //SEG39 [19] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 + //SEG36 [17] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG40 [20] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 + //SEG37 [18] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2 -- pbuz1=_inc_pbuz1 inc src bne !+ inc src+1 !: jmp b1 } -//SEG41 File Data -.pc = MEDUSA_SCREEN "MEDUSA_SCREEN" - .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) +//SEG38 File Data +MEDUSA_SCREEN: +.var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) .fill fileScreen.getSize(), fileScreen.get(i) -.pc = MEDUSA_COLORS "MEDUSA_COLORS" - .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) +MEDUSA_COLORS: +.var fileCols = LoadBinary("medusac.prg", BF_C64FILE) .fill fileCols.getSize(), fileCols.get(i) diff --git a/src/test/ref/complex/medusa/medusa.sym b/src/test/ref/complex/medusa/medusa.sym index 51f91b1cd..b68e79127 100644 --- a/src/test/ref/complex/medusa/medusa.sym +++ b/src/test/ref/complex/medusa/medusa.sym @@ -1,5 +1,4 @@ (label) @1 -(label) @2 (label) @begin (label) @end (byte*) BGCOL @@ -8,10 +7,14 @@ (const byte) BLACK#0 BLACK = (byte) 0 (byte*) COLS (const byte*) COLS#0 COLS = (byte*) 55296 -(byte*) MEDUSA_COLORS -(const byte*) MEDUSA_COLORS#0 MEDUSA_COLORS = (byte*) 5120 -(byte*) MEDUSA_SCREEN -(const byte*) MEDUSA_SCREEN#0 MEDUSA_SCREEN = (byte*) 4096 +(byte[]) MEDUSA_COLORS +(const byte[]) MEDUSA_COLORS#0 MEDUSA_COLORS = kickasm {{ .var fileCols = LoadBinary("medusac.prg", BF_C64FILE) + .fill fileCols.getSize(), fileCols.get(i) + }} +(byte[$3e8]) MEDUSA_SCREEN +(const byte[$3e8]) MEDUSA_SCREEN#0 MEDUSA_SCREEN = kickasm {{ .var fileScreen = LoadBinary("medusas.prg", BF_C64FILE) + .fill fileScreen.getSize(), fileScreen.get(i) + }} (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = (byte*) 1024 (void()) main() diff --git a/src/test/ref/complex/tetris/test-sprites.asm b/src/test/ref/complex/tetris/test-sprites.asm index 1c81ebc20..20385ae63 100644 --- a/src/test/ref/complex/tetris/test-sprites.asm +++ b/src/test/ref/complex/tetris/test-sprites.asm @@ -49,7 +49,6 @@ .label PLAYFIELD_CHARSET = $2800 // The Y-position of the first sprite row .const SPRITES_FIRST_YPOS = $31 - .label SIN = $1400 .label SIN_SPRITE = $2800 // Screen Sprite pointers on screen 1 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS @@ -312,6 +311,12 @@ sprites_irq: { sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } +SIN: +.var AMPL = 200-21 + .for(var i=0; i<256; i++) { + .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 + } + .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory @@ -328,12 +333,6 @@ sprites_irq: { } } -.pc = SIN "SIN" - .var AMPL = 200-21 - .for(var i=0; i<256; i++) { - .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 - } - .pc = SIN_SPRITE "SIN_SPRITE" .fill $40, $ff diff --git a/src/test/ref/complex/tetris/test-sprites.cfg b/src/test/ref/complex/tetris/test-sprites.cfg index 814cccb8e..ed0c612d0 100644 --- a/src/test/ref/complex/tetris/test-sprites.cfg +++ b/src/test/ref/complex/tetris/test-sprites.cfg @@ -31,201 +31,196 @@ toSpritePtr1: scope:[] from @2 [7] (byte) irq_cnt#0 ← (byte) 0 to:@3 @3: scope:[] from @5 - kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 - .for(var i=0; i<256; i++) { - .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 - } - }} kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} to:@4 @4: scope:[] from @3 - [10] phi() - [11] call main + [9] phi() + [10] call main to:@end @end: scope:[] from @4 - [12] phi() + [11] phi() main: scope:[main] from @4 - [13] phi() + [12] phi() to:main::vicSelectGfxBank1 main::vicSelectGfxBank1: scope:[main] from main - [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + [13] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 - [15] phi() + [14] phi() to:main::vicSelectGfxBank1_@1 main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 - [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + [15] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 to:main::toD0181 main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 - [17] phi() + [16] phi() to:main::@3 main::@3: scope:[main] from main::toD0181 - [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 - [19] call sprites_init + [17] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [18] call sprites_init to:main::@5 main::@5: scope:[main] from main::@3 - [20] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff + [19] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff to:main::@1 main::@1: scope:[main] from main::@4 main::@5 - [21] (byte) main::ypos#2 ← phi( main::@4/(byte) main::ypos#1 main::@5/(byte) $32 ) - [21] (byte) main::xpos#2 ← phi( main::@4/(byte) main::xpos#1 main::@5/(byte) $18 ) - [21] (byte) main::s#2 ← phi( main::@4/(byte) main::s#1 main::@5/(byte) 4 ) - [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 - [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 - [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 - [25] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 - [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 + [20] (byte) main::ypos#2 ← phi( main::@4/(byte) main::ypos#1 main::@5/(byte) $32 ) + [20] (byte) main::xpos#2 ← phi( main::@4/(byte) main::xpos#1 main::@5/(byte) $18 ) + [20] (byte) main::s#2 ← phi( main::@4/(byte) main::s#1 main::@5/(byte) 4 ) + [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 + [22] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 + [23] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 + [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 + [25] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 to:main::toSpritePtr2 main::toSpritePtr2: scope:[main] from main::@1 - [27] phi() + [26] phi() to:main::@4 main::@4: scope:[main] from main::toSpritePtr2 - [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 - [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 - [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 - [31] (byte) main::s#1 ← ++ (byte) main::s#2 - [32] if((byte) main::s#1!=(byte) 8) goto main::@1 + [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 + [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 + [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 + [30] (byte) main::s#1 ← ++ (byte) main::s#2 + [31] if((byte) main::s#1!=(byte) 8) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@4 - [33] phi() - [34] call sprites_irq_init + [32] phi() + [33] call sprites_irq_init to:main::@6 main::@6: scope:[main] from main::@2 - [35] phi() - [36] call loop + [34] phi() + [35] call loop to:main::@return main::@return: scope:[main] from main::@6 - [37] return + [36] return to:@return loop: scope:[loop] from main::@6 - [38] phi() + [37] phi() to:loop::@1 loop::@1: scope:[loop] from loop loop::@5 - [39] (byte) sin_idx#10 ← phi( loop/(byte) 0 loop::@5/(byte) sin_idx#3 ) + [38] (byte) sin_idx#10 ← phi( loop/(byte) 0 loop::@5/(byte) sin_idx#3 ) to:loop::@2 loop::@2: scope:[loop] from loop::@1 loop::@2 - [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 + [39] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 to:loop::@3 loop::@3: scope:[loop] from loop::@2 - [41] (byte) loop::idx#0 ← (byte) sin_idx#10 + [40] (byte) loop::idx#0 ← (byte) sin_idx#10 to:loop::@4 loop::@4: scope:[loop] from loop::@3 loop::@4 - [42] (byte) loop::idx#2 ← phi( loop::@3/(byte) loop::idx#0 loop::@4/(byte) loop::idx#1 ) - [42] (byte) loop::s#2 ← phi( loop::@3/(byte) 4 loop::@4/(byte) loop::s#1 ) - [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 - [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) - [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a - [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 - [47] if((byte) loop::s#1!=(byte) 8) goto loop::@4 + [41] (byte) loop::idx#2 ← phi( loop::@3/(byte) loop::idx#0 loop::@4/(byte) loop::idx#1 ) + [41] (byte) loop::s#2 ← phi( loop::@3/(byte) 4 loop::@4/(byte) loop::s#1 ) + [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 + [43] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte[$100]) SIN#0 + (byte) loop::idx#2) + [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a + [45] (byte) loop::s#1 ← ++ (byte) loop::s#2 + [46] if((byte) loop::s#1!=(byte) 8) goto loop::@4 to:loop::@5 loop::@5: scope:[loop] from loop::@4 - [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 + [47] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 to:loop::@1 sprites_irq_init: scope:[sprites_irq_init] from main::@2 asm { sei } - [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [49] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f - [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [51] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [52] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [53] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [54] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [55] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [56] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [57] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [60] return + [59] return to:@return sprites_init: scope:[sprites_init] from main::@3 - [61] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f - [62] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [60] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f + [61] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [62] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [63] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [65] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [65] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 - [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 - [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [71] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 + [64] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [64] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 + [66] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [67] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 + [69] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [70] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [72] return + [71] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [76] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 - [77] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 - [78] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 - [79] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 - [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 + [73] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [74] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [75] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 + [76] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 + [77] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 + [78] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 + [79] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 to:sprites_irq::@8 sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8 - [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 + [80] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 to:sprites_irq::@9 sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 - [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [83] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 + [81] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [82] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 to:sprites_irq::@10 sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9 - [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 - [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 - [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 + [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [84] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 + [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 + [87] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [88] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@2 sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10 - [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [91] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 + [89] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [90] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 to:sprites_irq::@6 sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2 - [92] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 + [91] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 to:sprites_irq::@7 sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6 - [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 - [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [92] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 + [93] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [94] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 - [96] (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#1 sprites_irq::@4/(byte) irq_sprite_ptr#2 sprites_irq::@7/(byte) irq_sprite_ptr#3 ) - [96] (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#1 sprites_irq::@4/(byte) irq_sprite_ypos#2 sprites_irq::@7/(byte) irq_sprite_ypos#3 ) - [96] (byte) irq_cnt#3 ← phi( sprites_irq::@11/(byte) irq_cnt#1 sprites_irq::@4/(byte) irq_cnt#2 sprites_irq::@7/(byte) irq_cnt#1 ) - [96] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) - [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 - [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [95] (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#1 sprites_irq::@4/(byte) irq_sprite_ptr#2 sprites_irq::@7/(byte) irq_sprite_ptr#3 ) + [95] (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#1 sprites_irq::@4/(byte) irq_sprite_ypos#2 sprites_irq::@7/(byte) irq_sprite_ypos#3 ) + [95] (byte) irq_cnt#3 ← phi( sprites_irq::@11/(byte) irq_cnt#1 sprites_irq::@4/(byte) irq_cnt#2 sprites_irq::@7/(byte) irq_cnt#1 ) + [95] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) + [96] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [97] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5 - [99] return + [98] return to:@return sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6 - [100] (byte) irq_cnt#2 ← (byte) 0 - [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 - [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [99] (byte) irq_cnt#2 ← (byte) 0 + [100] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [101] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [102] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 - [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 - [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 + [103] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 + [104] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@3 - [106] phi() + [105] phi() to:sprites_irq::@11 sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + [106] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 to:sprites_irq::@5 sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9 - [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 - [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 - [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 + [107] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [108] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [109] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 + [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 + [111] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [112] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@2 diff --git a/src/test/ref/complex/tetris/test-sprites.log b/src/test/ref/complex/tetris/test-sprites.log index df2fb70e7..8f8f7dff8 100644 --- a/src/test/ref/complex/tetris/test-sprites.log +++ b/src/test/ref/complex/tetris/test-sprites.log @@ -49,7 +49,6 @@ Adding pointer type conversion cast (byte*) PLAYFIELD_SCREEN_ORIGINAL in (byte*) Adding pointer type conversion cast (byte*) PLAYFIELD_COLORS_ORIGINAL in (byte*) PLAYFIELD_COLORS_ORIGINAL ← (number) $1c00 Adding pointer type conversion cast (byte*) PLAYFIELD_SPRITES in (byte*) PLAYFIELD_SPRITES ← (number) $2000 Adding pointer type conversion cast (byte*) PLAYFIELD_CHARSET in (byte*) PLAYFIELD_CHARSET ← (number) $2800 -Adding pointer type conversion cast (byte*) SIN in (byte*) SIN ← (number) $1400 Adding pointer type conversion cast (byte*) SIN_SPRITE in (byte*) SIN_SPRITE ← (number) $2800 Identified constant variable (byte*) current_piece_gfx Identified constant variable (byte) current_piece_char @@ -62,7 +61,6 @@ Identified constant variable (word) lines_bcd Identified constant variable (byte) level_bcd Identified constant variable (byte) level Identified constant variable (byte) game_over -Identified constant variable (byte*) SIN Identified constant variable (byte*) SIN_SPRITE Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call (byte~) $5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES @@ -375,13 +373,12 @@ sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@6 (byte) irq_sprite_ptr#17 ← phi( @10/(byte) irq_sprite_ptr#0 ) (byte) irq_raster_next#17 ← phi( @10/(byte) irq_raster_next#20 ) (byte) irq_sprite_ypos#14 ← phi( @10/(byte) irq_sprite_ypos#18 ) - (byte*) SIN#0 ← ((byte*)) (number) $1400 - (byte*) SIN_SPRITE#0 ← ((byte*)) (number) $2800 - kickasm(location (byte*) SIN#0) {{ .var AMPL = 200-21 + (byte[$100]) SIN#0 ← kickasm {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} + (byte*) SIN_SPRITE#0 ← ((byte*)) (number) $2800 kickasm(location (byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} (byte) sin_idx#0 ← (number) 0 @@ -540,7 +537,7 @@ loop::@6: scope:[loop] from loop::@5 loop::@6 (byte) loop::idx#2 ← phi( loop::@5/(byte) loop::idx#0 loop::@6/(byte) loop::idx#1 ) (byte) loop::s#2 ← phi( loop::@5/(byte) loop::s#0 loop::@6/(byte) loop::s#1 ) (number~) loop::$1 ← (byte) loop::s#2 * (number) 2 - *((byte*) SPRITES_YPOS#0 + (number~) loop::$1) ← *((byte*) SIN#0 + (byte) loop::idx#2) + *((byte*) SPRITES_YPOS#0 + (number~) loop::$1) ← *((byte[$100]) SIN#0 + (byte) loop::idx#2) (byte) loop::idx#1 ← (byte) loop::idx#2 + (number) $a (byte) loop::s#1 ← (byte) loop::s#2 + rangenext(4,7) (bool~) loop::$2 ← (byte) loop::s#1 != rangelast(4,7) @@ -629,8 +626,8 @@ SYMBOL TABLE SSA (byte) PROCPORT_RAM_IO#0 (byte*) RASTER (byte*) RASTER#0 -(byte*) SIN -(byte*) SIN#0 +(byte[$100]) SIN +(byte[$100]) SIN#0 (byte*) SIN_SPRITE (byte*) SIN_SPRITE#0 (byte*) SPRITES_COLS @@ -1122,7 +1119,6 @@ Inlining cast (byte) irq_cnt#0 ← (unumber)(number) 0 Inlining cast (word~) sprites_irq::toSpritePtr2_$0#0 ← (word)(byte*) sprites_irq::toSpritePtr2_sprite#1 Inlining cast (byte~) sprites_irq::toSpritePtr2_$2#0 ← (byte)(unumber~) sprites_irq::toSpritePtr2_$1#0 Inlining cast (byte) irq_cnt#2 ← (unumber)(number) 0 -Inlining cast (byte*) SIN#0 ← (byte*)(number) $1400 Inlining cast (byte*) SIN_SPRITE#0 ← (byte*)(number) $2800 Inlining cast (byte) sin_idx#0 ← (unumber)(number) 0 Inlining cast *((byte*) CIA2_PORT_A_DDR#0) ← (unumber)(number) 3 @@ -1199,7 +1195,6 @@ Simplifying constant integer cast 3 Simplifying constant integer cast $14 Simplifying constant integer cast $15 Simplifying constant integer cast 3 -Simplifying constant pointer cast (byte*) 5120 Simplifying constant pointer cast (byte*) 10240 Simplifying constant integer cast 0 Simplifying constant integer cast 3 @@ -1416,9 +1411,9 @@ Simple Condition (bool~) sprites_irq::$4 [95] if(*((byte*) RASTER#0)<(byte) spri Simple Condition (bool~) sprites_irq::$1 [99] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 Simple Condition (bool~) sprites_irq::$2 [117] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 Simple Condition (bool~) sprites_irq::$3 [134] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -Simple Condition (bool~) main::$8 [222] if((byte) main::s#1!=rangelast(4,7)) goto main::@1 -Simple Condition (bool~) loop::$0 [237] if(*((byte*) RASTER#0)!=(byte) $ff) goto loop::@4 -Simple Condition (bool~) loop::$2 [247] if((byte) loop::s#1!=rangelast(4,7)) goto loop::@6 +Simple Condition (bool~) main::$8 [221] if((byte) main::s#1!=rangelast(4,7)) goto main::@1 +Simple Condition (bool~) loop::$0 [236] if(*((byte*) RASTER#0)!=(byte) $ff) goto loop::@4 +Simple Condition (bool~) loop::$2 [246] if((byte) loop::s#1!=rangelast(4,7)) goto loop::@6 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [38] (byte) sprites_init::xpos#0 ← (unumber)(number) $18+(number) $f*(number) 8 Constant right-side identified [80] (void()*~) sprites_irq_init::$0 ← & interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() @@ -1455,7 +1450,11 @@ Constant (const byte) sprites_init::xpos#0 = (unumber)$18+$f*8 Constant (const byte) sprites_init::s#0 = 0 Constant (const byte) SPRITES_FIRST_YPOS#0 = $31 Constant (const void()*) sprites_irq_init::$0 = &sprites_irq -Constant (const byte*) SIN#0 = (byte*) 5120 +Constant (const byte[$100]) SIN#0 = kickasm {{ .var AMPL = 200-21 + .for(var i=0; i<256; i++) { + .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 + } + }} Constant (const byte*) SIN_SPRITE#0 = (byte*) 10240 Constant (const byte) sin_idx#0 = 0 Constant (const byte) main::xpos#0 = $18 @@ -1471,19 +1470,19 @@ Constant (const byte*) main::toSpritePtr2_sprite#0 = SIN_SPRITE#0 Successful SSA optimization Pass2ConstantIdentification Constant value identified (word)PLAYFIELD_SPRITES#0 in [60] (word~) toSpritePtr1_$0#0 ← (word)(const byte*) PLAYFIELD_SPRITES#0 Constant value identified (word)sprites_irq::toSpritePtr2_sprite#0 in [123] (word~) sprites_irq::toSpritePtr2_$0#0 ← (word)(const byte*) sprites_irq::toSpritePtr2_sprite#0 -Constant value identified (word)main::vicSelectGfxBank1_gfx#0 in [165] (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(const byte*) main::vicSelectGfxBank1_gfx#0 -Constant value identified (word)main::toD0181_screen#0 in [179] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 -Constant value identified (word)main::toD0181_gfx#0 in [183] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 -Constant value identified (word)main::toSpritePtr2_sprite#0 in [209] (word~) main::toSpritePtr2_$0#0 ← (word)(const byte*) main::toSpritePtr2_sprite#0 +Constant value identified (word)main::vicSelectGfxBank1_gfx#0 in [164] (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(const byte*) main::vicSelectGfxBank1_gfx#0 +Constant value identified (word)main::toD0181_screen#0 in [178] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 +Constant value identified (word)main::toD0181_gfx#0 in [182] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 +Constant value identified (word)main::toSpritePtr2_sprite#0 in [208] (word~) main::toSpritePtr2_$0#0 ← (word)(const byte*) main::toSpritePtr2_sprite#0 Successful SSA optimization Pass2ConstantValues -if() condition always true - replacing block destination [234] if(true) goto loop::@4 +if() condition always true - replacing block destination [233] if(true) goto loop::@4 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [47] sprites_init::s#1 ← ++ sprites_init::s#2 to ++ Resolved ranged comparison value [49] if(sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1 to (number) 4 -Resolved ranged next value [220] main::s#1 ← ++ main::s#2 to ++ -Resolved ranged comparison value [222] if(main::s#1!=rangelast(4,7)) goto main::@1 to (number) 8 -Resolved ranged next value [245] loop::s#1 ← ++ loop::s#2 to ++ -Resolved ranged comparison value [247] if(loop::s#1!=rangelast(4,7)) goto loop::@6 to (number) 8 +Resolved ranged next value [219] main::s#1 ← ++ main::s#2 to ++ +Resolved ranged comparison value [221] if(main::s#1!=rangelast(4,7)) goto main::@1 to (number) 8 +Resolved ranged next value [244] loop::s#1 ← ++ loop::s#2 to ++ +Resolved ranged comparison value [246] if(loop::s#1!=rangelast(4,7)) goto loop::@6 to (number) 8 Simplifying expression containing zero SPRITES_YPOS#0 in [87] *((const byte*) SPRITES_YPOS#0 + (byte) 0) ← (byte) sprites_irq::ypos#0 Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_1#0 in [101] *((byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) 0) ← (byte) sprites_irq::ptr#0 Simplifying expression containing zero PLAYFIELD_SPRITE_PTRS_2#0 in [108] *((byte*) PLAYFIELD_SPRITE_PTRS_2#0 + (byte) 0) ← (byte) sprites_irq::ptr#0 @@ -1530,10 +1529,10 @@ Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte~) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#1 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 Constant right-side identified [16] (word~) toSpritePtr1_$1#0 ← (const word) toSpritePtr1_$0#0 / (byte) $40 Constant right-side identified [60] (word~) sprites_irq::toSpritePtr2_$1#0 ← (const word) sprites_irq::toSpritePtr2_$0#0 / (byte) $40 -Constant right-side identified [81] (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) main::vicSelectGfxBank1_toDd001_$0#0 -Constant right-side identified [85] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff -Constant right-side identified [88] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 -Constant right-side identified [101] (word~) main::toSpritePtr2_$1#0 ← (const word) main::toSpritePtr2_$0#0 / (byte) $40 +Constant right-side identified [80] (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) main::vicSelectGfxBank1_toDd001_$0#0 +Constant right-side identified [84] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff +Constant right-side identified [87] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 +Constant right-side identified [100] (word~) main::toSpritePtr2_$1#0 ← (const word) main::toSpritePtr2_$0#0 / (byte) $40 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) toSpritePtr1_$1#0 = toSpritePtr1_$0#0/$40 Constant (const word) sprites_irq::toSpritePtr2_$1#0 = sprites_irq::toSpritePtr2_$0#0/$40 @@ -1544,14 +1543,14 @@ Constant (const word) main::toSpritePtr2_$1#0 = main::toSpritePtr2_$0#0/$40 Successful SSA optimization Pass2ConstantIdentification Constant value identified (byte)toSpritePtr1_$1#0 in [17] (byte) toSpritePtr1_return#0 ← (byte)(const word) toSpritePtr1_$1#0 Constant value identified (byte)sprites_irq::toSpritePtr2_$1#0 in [61] (byte~) sprites_irq::toSpritePtr2_$2#0 ← (byte)(const word) sprites_irq::toSpritePtr2_$1#0 -Constant value identified (byte)main::toSpritePtr2_$1#0 in [102] (byte) main::toSpritePtr2_return#0 ← (byte)(const word) main::toSpritePtr2_$1#0 +Constant value identified (byte)main::toSpritePtr2_$1#0 in [101] (byte) main::toSpritePtr2_return#0 ← (byte)(const word) main::toSpritePtr2_$1#0 Successful SSA optimization Pass2ConstantValues Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte~) $6 Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte~) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#1 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1 -Constant right-side identified [79] (byte~) main::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 -Constant right-side identified [82] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 -Constant right-side identified [84] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 +Constant right-side identified [78] (byte~) main::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 +Constant right-side identified [81] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 +Constant right-side identified [83] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) toSpritePtr1_return#0 = (byte)toSpritePtr1_$1#0 Constant (const byte) sprites_irq::toSpritePtr2_$2#0 = (byte)sprites_irq::toSpritePtr2_$1#0 @@ -1568,7 +1567,7 @@ Constant (const byte) sprites_irq::$5 = sprites_irq::toSpritePtr2_return#1 Successful SSA optimization Pass2ConstantIdentification Simplifying constant evaluating to zero (const byte) main::vicSelectGfxBank1_toDd001_$1#0/(byte) $40 in Successful SSA optimization PassNSimplifyConstantZero -Simplifying expression containing zero 3 in [80] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2#0 +Simplifying expression containing zero 3 in [79] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2#0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 Eliminating unused constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 @@ -1580,8 +1579,8 @@ Successful SSA optimization PassNEliminateUnusedVars Alias candidate removed (volatile)(byte) irq_sprite_ptr#0 = (byte~) $6 Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 Constant right-side identified [16] (byte~) $6 ← (const byte) toSpritePtr1_return#0 + (byte) 3 -Constant right-side identified [76] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 -Constant right-side identified [77] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f +Constant right-side identified [75] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 +Constant right-side identified [76] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) $6 = toSpritePtr1_return#0+3 Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3 @@ -1589,14 +1588,14 @@ Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&$f Successful SSA optimization Pass2ConstantIdentification Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 -Constant right-side identified [74] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 +Constant right-side identified [73] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte~) sprites_irq::$0 Rewriting multiplication to use shift [7] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 * (byte) 2 -Rewriting multiplication to use shift [78] (byte) main::s2#0 ← (byte) main::s#2 * (byte) 2 -Rewriting multiplication to use shift [95] (byte~) loop::$1 ← (byte) loop::s#2 * (byte) 2 +Rewriting multiplication to use shift [77] (byte) main::s2#0 ← (byte) main::s#2 * (byte) 2 +Rewriting multiplication to use shift [94] (byte~) loop::$1 ← (byte) loop::s#2 * (byte) 2 Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const byte) sprites_init::xpos#0 Inlining constant with var siblings (const byte) sprites_init::s#0 @@ -1675,31 +1674,31 @@ Adding NOP phi() at start of loop Adding NOP phi() at start of sprites_irq::toSpritePtr2 Adding NOP phi() at start of sprites_irq::toSpritePtr2_@return CALL GRAPH -Calls in [] to main:12 -Calls in [main] to sprites_init:24 sprites_irq_init:40 loop:42 +Calls in [] to main:11 +Calls in [main] to sprites_init:23 sprites_irq_init:39 loop:41 Created 12 initial phi equivalence classes -Coalesced [45] main::s#6 ← main::s#1 -Coalesced [46] main::xpos#6 ← main::xpos#1 -Coalesced [47] main::ypos#6 ← main::ypos#1 -Coalesced [52] loop::idx#3 ← loop::idx#0 -Coalesced [60] sin_idx#33 ← sin_idx#3 -Coalesced [61] loop::s#3 ← loop::s#1 -Coalesced [62] loop::idx#4 ← loop::idx#1 -Coalesced [87] sprites_init::s#3 ← sprites_init::s#1 -Coalesced [88] sprites_init::xpos#3 ← sprites_init::xpos#1 -Coalesced [112] irq_raster_next#26 ← irq_raster_next#3 -Coalesced [113] irq_cnt#22 ← irq_cnt#1 -Coalesced [114] irq_sprite_ypos#26 ← irq_sprite_ypos#3 -Coalesced [115] irq_sprite_ptr#20 ← irq_sprite_ptr#3 -Coalesced [124] irq_raster_next#25 ← irq_raster_next#2 -Coalesced [125] irq_cnt#21 ← irq_cnt#2 -Coalesced [126] irq_sprite_ypos#25 ← irq_sprite_ypos#2 -Coalesced [127] irq_sprite_ptr#19 ← irq_sprite_ptr#2 -Coalesced [133] irq_raster_next#24 ← irq_raster_next#1 -Coalesced (already) [134] irq_cnt#20 ← irq_cnt#1 -Coalesced [135] irq_sprite_ypos#24 ← irq_sprite_ypos#1 -Coalesced [136] irq_sprite_ptr#18 ← irq_sprite_ptr#1 +Coalesced [44] main::s#6 ← main::s#1 +Coalesced [45] main::xpos#6 ← main::xpos#1 +Coalesced [46] main::ypos#6 ← main::ypos#1 +Coalesced [51] loop::idx#3 ← loop::idx#0 +Coalesced [59] sin_idx#33 ← sin_idx#3 +Coalesced [60] loop::s#3 ← loop::s#1 +Coalesced [61] loop::idx#4 ← loop::idx#1 +Coalesced [86] sprites_init::s#3 ← sprites_init::s#1 +Coalesced [87] sprites_init::xpos#3 ← sprites_init::xpos#1 +Coalesced [111] irq_raster_next#26 ← irq_raster_next#3 +Coalesced [112] irq_cnt#22 ← irq_cnt#1 +Coalesced [113] irq_sprite_ypos#26 ← irq_sprite_ypos#3 +Coalesced [114] irq_sprite_ptr#20 ← irq_sprite_ptr#3 +Coalesced [123] irq_raster_next#25 ← irq_raster_next#2 +Coalesced [124] irq_cnt#21 ← irq_cnt#2 +Coalesced [125] irq_sprite_ypos#25 ← irq_sprite_ypos#2 +Coalesced [126] irq_sprite_ptr#19 ← irq_sprite_ptr#2 +Coalesced [132] irq_raster_next#24 ← irq_raster_next#1 +Coalesced (already) [133] irq_cnt#20 ← irq_cnt#1 +Coalesced [134] irq_sprite_ypos#24 ← irq_sprite_ypos#1 +Coalesced [135] irq_sprite_ptr#18 ← irq_sprite_ptr#1 Coalesced down to 12 phi equivalence classes Culled Empty Block (label) toSpritePtr1_@return Culled Empty Block (label) @11 @@ -1779,203 +1778,198 @@ toSpritePtr1: scope:[] from @2 [7] (byte) irq_cnt#0 ← (byte) 0 to:@3 @3: scope:[] from @5 - kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 - .for(var i=0; i<256; i++) { - .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 - } - }} kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} to:@4 @4: scope:[] from @3 - [10] phi() - [11] call main + [9] phi() + [10] call main to:@end @end: scope:[] from @4 - [12] phi() + [11] phi() main: scope:[main] from @4 - [13] phi() + [12] phi() to:main::vicSelectGfxBank1 main::vicSelectGfxBank1: scope:[main] from main - [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + [13] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 - [15] phi() + [14] phi() to:main::vicSelectGfxBank1_@1 main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 - [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + [15] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 to:main::toD0181 main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 - [17] phi() + [16] phi() to:main::@3 main::@3: scope:[main] from main::toD0181 - [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 - [19] call sprites_init + [17] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [18] call sprites_init to:main::@5 main::@5: scope:[main] from main::@3 - [20] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff + [19] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff to:main::@1 main::@1: scope:[main] from main::@4 main::@5 - [21] (byte) main::ypos#2 ← phi( main::@4/(byte) main::ypos#1 main::@5/(byte) $32 ) - [21] (byte) main::xpos#2 ← phi( main::@4/(byte) main::xpos#1 main::@5/(byte) $18 ) - [21] (byte) main::s#2 ← phi( main::@4/(byte) main::s#1 main::@5/(byte) 4 ) - [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 - [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 - [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 - [25] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 - [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 + [20] (byte) main::ypos#2 ← phi( main::@4/(byte) main::ypos#1 main::@5/(byte) $32 ) + [20] (byte) main::xpos#2 ← phi( main::@4/(byte) main::xpos#1 main::@5/(byte) $18 ) + [20] (byte) main::s#2 ← phi( main::@4/(byte) main::s#1 main::@5/(byte) 4 ) + [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 + [22] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 + [23] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 + [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 + [25] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 to:main::toSpritePtr2 main::toSpritePtr2: scope:[main] from main::@1 - [27] phi() + [26] phi() to:main::@4 main::@4: scope:[main] from main::toSpritePtr2 - [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 - [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 - [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 - [31] (byte) main::s#1 ← ++ (byte) main::s#2 - [32] if((byte) main::s#1!=(byte) 8) goto main::@1 + [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 + [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 + [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 + [30] (byte) main::s#1 ← ++ (byte) main::s#2 + [31] if((byte) main::s#1!=(byte) 8) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@4 - [33] phi() - [34] call sprites_irq_init + [32] phi() + [33] call sprites_irq_init to:main::@6 main::@6: scope:[main] from main::@2 - [35] phi() - [36] call loop + [34] phi() + [35] call loop to:main::@return main::@return: scope:[main] from main::@6 - [37] return + [36] return to:@return loop: scope:[loop] from main::@6 - [38] phi() + [37] phi() to:loop::@1 loop::@1: scope:[loop] from loop loop::@5 - [39] (byte) sin_idx#10 ← phi( loop/(byte) 0 loop::@5/(byte) sin_idx#3 ) + [38] (byte) sin_idx#10 ← phi( loop/(byte) 0 loop::@5/(byte) sin_idx#3 ) to:loop::@2 loop::@2: scope:[loop] from loop::@1 loop::@2 - [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 + [39] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 to:loop::@3 loop::@3: scope:[loop] from loop::@2 - [41] (byte) loop::idx#0 ← (byte) sin_idx#10 + [40] (byte) loop::idx#0 ← (byte) sin_idx#10 to:loop::@4 loop::@4: scope:[loop] from loop::@3 loop::@4 - [42] (byte) loop::idx#2 ← phi( loop::@3/(byte) loop::idx#0 loop::@4/(byte) loop::idx#1 ) - [42] (byte) loop::s#2 ← phi( loop::@3/(byte) 4 loop::@4/(byte) loop::s#1 ) - [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 - [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) - [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a - [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 - [47] if((byte) loop::s#1!=(byte) 8) goto loop::@4 + [41] (byte) loop::idx#2 ← phi( loop::@3/(byte) loop::idx#0 loop::@4/(byte) loop::idx#1 ) + [41] (byte) loop::s#2 ← phi( loop::@3/(byte) 4 loop::@4/(byte) loop::s#1 ) + [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 + [43] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte[$100]) SIN#0 + (byte) loop::idx#2) + [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a + [45] (byte) loop::s#1 ← ++ (byte) loop::s#2 + [46] if((byte) loop::s#1!=(byte) 8) goto loop::@4 to:loop::@5 loop::@5: scope:[loop] from loop::@4 - [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 + [47] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 to:loop::@1 sprites_irq_init: scope:[sprites_irq_init] from main::@2 asm { sei } - [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [49] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 asm { ldaCIA1_INTERRUPT } - [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 - [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f - [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 - [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 - [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() + [51] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [52] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [53] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [54] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f + [55] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [56] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [57] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() asm { cli } to:sprites_irq_init::@return sprites_irq_init::@return: scope:[sprites_irq_init] from sprites_irq_init - [60] return + [59] return to:@return sprites_init: scope:[sprites_init] from main::@3 - [61] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f - [62] *((const byte*) SPRITES_MC#0) ← (byte) 0 - [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) - [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + [60] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f + [61] *((const byte*) SPRITES_MC#0) ← (byte) 0 + [62] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [63] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [65] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) - [65] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) - [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 - [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 - [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 - [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 - [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 - [71] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 + [64] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 ) + [64] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 ) + [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 + [66] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 + [67] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 + [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 + [69] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 + [70] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [72] return + [71] return to:@return sprites_irq: scope:[sprites_irq] from asm { cld } - [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 - [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 - [76] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 - [77] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 - [78] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 - [79] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 - [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 + [73] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 + [74] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 + [75] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 + [76] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 + [77] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 + [78] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 + [79] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 to:sprites_irq::@8 sprites_irq::@8: scope:[sprites_irq] from sprites_irq sprites_irq::@8 - [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 + [80] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 to:sprites_irq::@9 sprites_irq::@9: scope:[sprites_irq] from sprites_irq::@8 - [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 - [83] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 + [81] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 + [82] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 to:sprites_irq::@10 sprites_irq::@10: scope:[sprites_irq] from sprites_irq::@9 - [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 - [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 - [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 - [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 - [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 - [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 + [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 + [84] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 + [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 + [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 + [87] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 + [88] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 to:sprites_irq::@2 sprites_irq::@2: scope:[sprites_irq] from sprites_irq::@1 sprites_irq::@10 - [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 - [91] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 + [89] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [90] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 to:sprites_irq::@6 sprites_irq::@6: scope:[sprites_irq] from sprites_irq::@2 - [92] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 + [91] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 to:sprites_irq::@7 sprites_irq::@7: scope:[sprites_irq] from sprites_irq::@6 - [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 - [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [92] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 + [93] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [94] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@5: scope:[sprites_irq] from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 - [96] (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#1 sprites_irq::@4/(byte) irq_sprite_ptr#2 sprites_irq::@7/(byte) irq_sprite_ptr#3 ) - [96] (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#1 sprites_irq::@4/(byte) irq_sprite_ypos#2 sprites_irq::@7/(byte) irq_sprite_ypos#3 ) - [96] (byte) irq_cnt#3 ← phi( sprites_irq::@11/(byte) irq_cnt#1 sprites_irq::@4/(byte) irq_cnt#2 sprites_irq::@7/(byte) irq_cnt#1 ) - [96] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) - [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 - [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [95] (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#1 sprites_irq::@4/(byte) irq_sprite_ptr#2 sprites_irq::@7/(byte) irq_sprite_ptr#3 ) + [95] (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#1 sprites_irq::@4/(byte) irq_sprite_ypos#2 sprites_irq::@7/(byte) irq_sprite_ypos#3 ) + [95] (byte) irq_cnt#3 ← phi( sprites_irq::@11/(byte) irq_cnt#1 sprites_irq::@4/(byte) irq_cnt#2 sprites_irq::@7/(byte) irq_cnt#1 ) + [95] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 ) + [96] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 + [97] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 to:sprites_irq::@return sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@5 - [99] return + [98] return to:@return sprites_irq::@4: scope:[sprites_irq] from sprites_irq::@6 - [100] (byte) irq_cnt#2 ← (byte) 0 - [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 - [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 - [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 + [99] (byte) irq_cnt#2 ← (byte) 0 + [100] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 + [101] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 + [102] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 to:sprites_irq::@5 sprites_irq::@3: scope:[sprites_irq] from sprites_irq::@2 - [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 - [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 + [103] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 + [104] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 to:sprites_irq::toSpritePtr2 sprites_irq::toSpritePtr2: scope:[sprites_irq] from sprites_irq::@3 - [106] phi() + [105] phi() to:sprites_irq::@11 sprites_irq::@11: scope:[sprites_irq] from sprites_irq::toSpritePtr2 - [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 + [106] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 to:sprites_irq::@5 sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9 - [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 - [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 - [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 - [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 - [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 - [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 + [107] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 + [108] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 + [109] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 + [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 + [111] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 + [112] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 to:sprites_irq::@2 @@ -2002,7 +1996,7 @@ VARIABLE REGISTER WEIGHTS (byte) PROCPORT_DDR_MEMORY_MASK (byte) PROCPORT_RAM_IO (byte*) RASTER -(byte*) SIN +(byte[$100]) SIN (byte*) SIN_SPRITE (byte*) SPRITES_COLS (byte*) SPRITES_ENABLE @@ -2257,7 +2251,6 @@ INITIAL ASM .label PLAYFIELD_CHARSET = $2800 // The Y-position of the first sprite row .const SPRITES_FIRST_YPOS = $31 - .label SIN = $1400 .label SIN_SPRITE = $2800 // Screen Sprite pointers on screen 1 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS @@ -2312,23 +2305,22 @@ b5: jmp b3 //SEG15 @3 b3: -//SEG16 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} -//SEG17 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} -//SEG18 [10] phi from @3 to @4 [phi:@3->@4] +//SEG16 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} +//SEG17 [9] phi from @3 to @4 [phi:@3->@4] b4_from_b3: jmp b4 -//SEG19 @4 +//SEG18 @4 b4: -//SEG20 [11] call main -//SEG21 [13] phi from @4 to main [phi:@4->main] +//SEG19 [10] call main +//SEG20 [12] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG22 [12] phi from @4 to @end [phi:@4->@end] +//SEG21 [11] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG23 @end +//SEG22 @end bend: -//SEG24 main +//SEG23 main main: { .const toSpritePtr2_return = SIN_SPRITE/$40 .const vicSelectGfxBank1_toDd001_return = 3 @@ -2339,309 +2331,309 @@ main: { .label ypos = 4 .label s = 2 jmp vicSelectGfxBank1 - //SEG25 main::vicSelectGfxBank1 + //SEG24 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG26 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG27 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG26 [14] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG28 main::vicSelectGfxBank1_toDd001 + //SEG27 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG29 main::vicSelectGfxBank1_@1 + //SEG28 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG30 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG29 [15] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG31 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG30 [16] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG32 main::toD0181 + //SEG31 main::toD0181 toD0181: jmp b3 - //SEG33 main::@3 + //SEG32 main::@3 b3: - //SEG34 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG33 [17] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG35 [19] call sprites_init + //SEG34 [18] call sprites_init jsr sprites_init jmp b5 - //SEG36 main::@5 + //SEG35 main::@5 b5: - //SEG37 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 + //SEG36 [19] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG38 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG37 [20] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG39 [21] phi (byte) main::ypos#2 = (byte) $32 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 + //SEG38 [20] phi (byte) main::ypos#2 = (byte) $32 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 lda #$32 sta ypos - //SEG40 [21] phi (byte) main::xpos#2 = (byte) $18 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 + //SEG39 [20] phi (byte) main::xpos#2 = (byte) $18 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 lda #$18 sta xpos - //SEG41 [21] phi (byte) main::s#2 = (byte) 4 [phi:main::@5->main::@1#2] -- vbuz1=vbuc1 + //SEG40 [20] phi (byte) main::s#2 = (byte) 4 [phi:main::@5->main::@1#2] -- vbuz1=vbuc1 lda #4 sta s jmp b1 - //SEG42 [21] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG41 [20] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG43 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@4->main::@1#0] -- register_copy - //SEG44 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@4->main::@1#1] -- register_copy - //SEG45 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@4->main::@1#2] -- register_copy + //SEG42 [20] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG43 [20] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@4->main::@1#1] -- register_copy + //SEG44 [20] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@4->main::@1#2] -- register_copy jmp b1 - //SEG46 main::@1 + //SEG45 main::@1 b1: - //SEG47 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG46 [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG48 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG47 [22] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG49 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG48 [23] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda ypos ldy s2 sta SPRITES_YPOS,y - //SEG50 [25] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 -- vbuz1=vbuz2_minus_vbuc1 + //SEG49 [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 -- vbuz1=vbuz2_minus_vbuc1 lax s axs #3 stx _6 - //SEG51 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG50 [25] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy s sta SPRITES_COLS,y - //SEG52 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] + //SEG51 [26] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] toSpritePtr2_from_b1: jmp toSpritePtr2 - //SEG53 main::toSpritePtr2 + //SEG52 main::toSpritePtr2 toSpritePtr2: jmp b4 - //SEG54 main::@4 + //SEG53 main::@4 b4: - //SEG55 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG54 [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #toSpritePtr2_return ldy s sta PLAYFIELD_SPRITE_PTRS_1,y - //SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG55 [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG56 [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax ypos axs #-[$18] stx ypos - //SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1 + //SEG57 [30] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG59 [32] if((byte) main::s#1!=(byte) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG58 [31] if((byte) main::s#1!=(byte) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp s bne b1_from_b4 - //SEG60 [33] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG59 [32] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: jmp b2 - //SEG61 main::@2 + //SEG60 main::@2 b2: - //SEG62 [34] call sprites_irq_init + //SEG61 [33] call sprites_irq_init jsr sprites_irq_init - //SEG63 [35] phi from main::@2 to main::@6 [phi:main::@2->main::@6] + //SEG62 [34] phi from main::@2 to main::@6 [phi:main::@2->main::@6] b6_from_b2: jmp b6 - //SEG64 main::@6 + //SEG63 main::@6 b6: - //SEG65 [36] call loop - //SEG66 [38] phi from main::@6 to loop [phi:main::@6->loop] + //SEG64 [35] call loop + //SEG65 [37] phi from main::@6 to loop [phi:main::@6->loop] loop_from_b6: jsr loop jmp breturn - //SEG67 main::@return + //SEG66 main::@return breturn: - //SEG68 [37] return + //SEG67 [36] return rts } -//SEG69 loop +//SEG68 loop loop: { .label _1 = $12 .label idx = 7 .label s = 6 - //SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG69 [38] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG71 [39] phi (byte) sin_idx#10 = (byte) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG70 [38] phi (byte) sin_idx#10 = (byte) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx jmp b1 - //SEG72 loop::@1 + //SEG71 loop::@1 b1: jmp b2 - //SEG73 loop::@2 + //SEG72 loop::@2 b2: - //SEG74 [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG73 [39] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 jmp b3 - //SEG75 loop::@3 + //SEG74 loop::@3 b3: - //SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 + //SEG75 [40] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuz1=vbuz2 lda sin_idx sta idx - //SEG77 [42] phi from loop::@3 to loop::@4 [phi:loop::@3->loop::@4] + //SEG76 [41] phi from loop::@3 to loop::@4 [phi:loop::@3->loop::@4] b4_from_b3: - //SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@3->loop::@4#0] -- register_copy - //SEG79 [42] phi (byte) loop::s#2 = (byte) 4 [phi:loop::@3->loop::@4#1] -- vbuz1=vbuc1 + //SEG77 [41] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@3->loop::@4#0] -- register_copy + //SEG78 [41] phi (byte) loop::s#2 = (byte) 4 [phi:loop::@3->loop::@4#1] -- vbuz1=vbuc1 lda #4 sta s jmp b4 - //SEG80 [42] phi from loop::@4 to loop::@4 [phi:loop::@4->loop::@4] + //SEG79 [41] phi from loop::@4 to loop::@4 [phi:loop::@4->loop::@4] b4_from_b4: - //SEG81 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@4->loop::@4#0] -- register_copy - //SEG82 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@4->loop::@4#1] -- register_copy + //SEG80 [41] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@4->loop::@4#0] -- register_copy + //SEG81 [41] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@4->loop::@4#1] -- register_copy jmp b4 - //SEG83 loop::@4 + //SEG82 loop::@4 b4: - //SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG83 [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta _1 - //SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG84 [43] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte[$100]) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy idx lda SIN,y ldy _1 sta SPRITES_YPOS,y - //SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a -- vbuz1=vbuz1_plus_vbuc1 + //SEG85 [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a -- vbuz1=vbuz1_plus_vbuc1 lax idx axs #-[$a] stx idx - //SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 + //SEG86 [45] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG88 [47] if((byte) loop::s#1!=(byte) 8) goto loop::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG87 [46] if((byte) loop::s#1!=(byte) 8) goto loop::@4 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp s bne b4_from_b4 jmp b5 - //SEG89 loop::@5 + //SEG88 loop::@5 b5: - //SEG90 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 + //SEG89 [47] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 inc sin_idx - //SEG91 [39] phi from loop::@5 to loop::@1 [phi:loop::@5->loop::@1] + //SEG90 [38] phi from loop::@5 to loop::@1 [phi:loop::@5->loop::@1] b1_from_b5: - //SEG92 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@5->loop::@1#0] -- register_copy + //SEG91 [38] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@5->loop::@1#0] -- register_copy jmp b1 } -//SEG93 sprites_irq_init +//SEG92 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG94 asm { sei } + //SEG93 asm { sei } sei - //SEG95 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG94 [49] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG96 asm { ldaCIA1_INTERRUPT } + //SEG95 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG97 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG96 [51] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG98 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG97 [52] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG99 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG98 [53] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG100 [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG99 [54] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG100 [55] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG102 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG101 [56] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG103 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG102 [57] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG104 asm { cli } + //SEG103 asm { cli } cli jmp breturn - //SEG105 sprites_irq_init::@return + //SEG104 sprites_irq_init::@return breturn: - //SEG106 [60] return + //SEG105 [59] return rts } -//SEG107 sprites_init +//SEG106 sprites_init // Setup the sprites sprites_init: { .label s2 = $13 .label xpos = 9 .label s = 8 - //SEG108 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 + //SEG107 [60] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG109 [62] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG108 [61] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG110 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG109 [62] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG111 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG110 [63] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG112 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG111 [64] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG112 [64] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG114 [65] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 + //SEG113 [64] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuz1=vbuc1 lda #0 sta s jmp b1 - //SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG114 [64] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG116 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG117 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG115 [64] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG116 [64] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG118 sprites_init::@1 + //SEG117 sprites_init::@1 b1: - //SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG118 [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda s asl sta s2 - //SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG119 [66] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda xpos ldy s2 sta SPRITES_XPOS,y - //SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG120 [67] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #BLACK ldy s sta SPRITES_COLS,y - //SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG121 [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 + //SEG122 [69] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG124 [71] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG123 [70] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp s bne b1_from_b1 jmp breturn - //SEG125 sprites_init::@return + //SEG124 sprites_init::@return breturn: - //SEG126 [72] return + //SEG125 [71] return rts } -//SEG127 sprites_irq +//SEG126 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers @@ -2655,132 +2647,132 @@ sprites_irq: { .label ptr_2 = $1a .label ptr_3 = $17 .label ptr_4 = $18 - //SEG128 entry interrupt(HARDWARE_CLOBBER) + //SEG127 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 sty regy+1 - //SEG129 asm { cld } + //SEG128 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG130 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 + //SEG129 [73] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuz1=vbuz2 // Place the sprites lda irq_sprite_ypos sta ypos - //SEG131 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG130 [74] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS - //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG131 [75] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+2 - //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+4 - //SEG134 [78] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 + //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuz1 lda ypos sta SPRITES_YPOS+6 - //SEG135 [79] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 + //SEG134 [78] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy irq_raster_next iny sty _0 - //SEG136 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuz2 + //SEG135 [79] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuz2 // Wait for the y-position before changing sprite pointers lda _0 sta raster_sprite_gfx_modify jmp b8 - //SEG137 sprites_irq::@8 + //SEG136 sprites_irq::@8 b8: - //SEG138 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG137 [80] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 jmp b9 - //SEG139 sprites_irq::@9 + //SEG138 sprites_irq::@9 b9: - //SEG140 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 + //SEG139 [81] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuz1=vbuz2 lda irq_sprite_ptr sta ptr - //SEG141 [83] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG140 [82] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 jmp b10 - //SEG142 sprites_irq::@10 + //SEG141 sprites_irq::@10 b10: - //SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG142 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_2 - //SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG143 [84] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_3 - //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG144 [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 + //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuz1 lda ptr_3 sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG147 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 + //SEG146 [87] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuz1=_inc_vbuz2 ldy ptr_3 iny sty ptr_4 - //SEG148 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 + //SEG147 [88] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuz1 lda ptr_4 sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b2 - //SEG149 sprites_irq::@2 + //SEG148 sprites_irq::@2 b2: - //SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG149 [89] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG151 [91] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG150 [90] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 jmp b6 - //SEG152 sprites_irq::@6 + //SEG151 sprites_irq::@6 b6: - //SEG153 [92] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG152 [91] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 jmp b7 - //SEG154 sprites_irq::@7 + //SEG153 sprites_irq::@7 b7: - //SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG154 [92] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG156 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG155 [93] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG156 [94] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG158 [96] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG157 [95] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] b5_from_b11: b5_from_b4: b5_from_b7: - //SEG159 [96] phi (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy - //SEG160 [96] phi (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#1] -- register_copy - //SEG161 [96] phi (byte) irq_cnt#3 = (byte) irq_cnt#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#2] -- register_copy - //SEG162 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#3] -- register_copy + //SEG158 [95] phi (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG159 [95] phi (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#1] -- register_copy + //SEG160 [95] phi (byte) irq_cnt#3 = (byte) irq_cnt#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#2] -- register_copy + //SEG161 [95] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#3] -- register_copy jmp b5 - //SEG163 sprites_irq::@5 + //SEG162 sprites_irq::@5 b5: - //SEG164 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG163 [96] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG165 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG164 [97] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG166 sprites_irq::@return + //SEG165 sprites_irq::@return breturn: - //SEG167 [99] return - exit interrupt(HARDWARE_CLOBBER) + //SEG166 [98] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: @@ -2788,69 +2780,75 @@ sprites_irq: { regy: ldy #00 rti - //SEG168 sprites_irq::@4 + //SEG167 sprites_irq::@4 b4: - //SEG169 [100] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 + //SEG168 [99] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG170 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG169 [100] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG171 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG170 [101] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG172 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG171 [102] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5_from_b4 - //SEG173 sprites_irq::@3 + //SEG172 sprites_irq::@3 b3: - //SEG174 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG173 [103] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG175 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG174 [104] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG176 [106] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG175 [105] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] toSpritePtr2_from_b3: jmp toSpritePtr2 - //SEG177 sprites_irq::toSpritePtr2 + //SEG176 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b11 - //SEG178 sprites_irq::@11 + //SEG177 sprites_irq::@11 b11: - //SEG179 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG178 [106] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5_from_b11 - //SEG180 sprites_irq::@1 + //SEG179 sprites_irq::@1 b1: - //SEG181 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 + //SEG180 [107] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuz1 lda ptr sta PLAYFIELD_SPRITE_PTRS_1 - //SEG182 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 + //SEG181 [108] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuz1=_inc_vbuz2 ldy ptr iny sty ptr_1 - //SEG183 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG182 [109] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+1 - //SEG184 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 + //SEG183 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuz1 lda ptr_1 sta PLAYFIELD_SPRITE_PTRS_1+2 - //SEG185 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 + //SEG184 [111] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuz1=_inc_vbuz2 ldy ptr_1 iny sty ptr_2 - //SEG186 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 + //SEG185 [112] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuz1 lda ptr_2 sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } -//SEG187 File Data +//SEG186 File Data +SIN: +.var AMPL = 200-21 + .for(var i=0; i<256; i++) { + .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 + } + .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory @@ -2867,12 +2865,6 @@ sprites_irq: { } } -.pc = SIN "SIN" - .var AMPL = 200-21 - .for(var i=0; i<256; i++) { - .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 - } - .pc = SIN_SPRITE "SIN_SPRITE" .fill $40, $ff @@ -2883,119 +2875,119 @@ Statement [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( Statement [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( ) always clobbers reg byte a Statement [7] (byte) irq_cnt#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a +Statement [13] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [15] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [17] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [19] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::s#2 main::s#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] -Statement [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a +Statement [22] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ main::s2#0 ] -Statement [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ) always clobbers reg byte a -Statement [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:11 [ main::s#2 main::ypos#2 main::xpos#1 ] ) always clobbers reg byte a -Statement [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:11 [ main::s#2 main::xpos#1 main::ypos#1 ] ) always clobbers reg byte a -Statement [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:11::loop:36 [ sin_idx#10 ] ) always clobbers reg byte a +Statement [23] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a +Statement [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ) always clobbers reg byte a +Statement [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a +Statement [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:10 [ main::s#2 main::ypos#2 main::xpos#1 ] ) always clobbers reg byte a +Statement [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:10 [ main::s#2 main::xpos#1 main::ypos#1 ] ) always clobbers reg byte a +Statement [39] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:10::loop:35 [ sin_idx#10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] -Statement [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:11::loop:36 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ) always clobbers reg byte a +Statement [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ loop::idx#2 loop::idx#0 loop::idx#1 ] -Statement [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:11::loop:36 [ sin_idx#10 loop::s#2 loop::idx#2 ] ) always clobbers reg byte a -Statement [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:11::loop:36 [ sin_idx#10 loop::s#2 loop::idx#1 ] ) always clobbers reg byte a -Statement [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a +Statement [43] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte[$100]) SIN#0 + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 ] ) always clobbers reg byte a +Statement [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#1 ] ) always clobbers reg byte a +Statement [49] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [61] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [51] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [52] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [53] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [54] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [55] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [56] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [57] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [60] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [61] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [62] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [63] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ sprites_init::s#2 sprites_init::s#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Statement [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [83] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [66] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [67] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [80] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [82] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ sprites_irq::ptr#0 ] -Statement [91] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [92] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ( [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ) always clobbers reg byte a reg byte x -Statement [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ( [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ) always clobbers reg byte a reg byte x -Statement [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [99] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [100] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ) always clobbers reg byte a -Statement [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ) always clobbers reg byte a -Statement [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ) always clobbers reg byte a reg byte x -Statement [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ( [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ) always clobbers reg byte a reg byte x -Statement [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_cnt#1 irq_raster_next#1 ] ( [ irq_cnt#1 irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ) always clobbers reg byte a -Statement [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ) always clobbers reg byte a +Statement [90] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [91] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [92] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [93] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ( [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ) always clobbers reg byte a reg byte x +Statement [94] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ( [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ) always clobbers reg byte a reg byte x +Statement [96] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [97] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [98] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [99] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ) always clobbers reg byte a +Statement [100] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ) always clobbers reg byte a +Statement [101] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ) always clobbers reg byte a reg byte x +Statement [102] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ( [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ) always clobbers reg byte a reg byte x +Statement [103] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_cnt#1 irq_raster_next#1 ] ( [ irq_cnt#1 irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [104] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ) always clobbers reg byte a +Statement [106] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ) always clobbers reg byte a Statement [1] (byte) render_screen_showing#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a Statement [3] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a Statement [4] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15 [ ] ( ) always clobbers reg byte a Statement [6] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3 [ ] ( ) always clobbers reg byte a Statement [7] (byte) irq_cnt#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a -Statement [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [20] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a -Statement [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a -Statement [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [25] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ) always clobbers reg byte a -Statement [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:11 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a -Statement [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:11 [ main::s#2 main::ypos#2 main::xpos#1 ] ) always clobbers reg byte a -Statement [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:11 [ main::s#2 main::xpos#1 main::ypos#1 ] ) always clobbers reg byte a -Statement [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:11::loop:36 [ sin_idx#10 ] ) always clobbers reg byte a -Statement [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:11::loop:36 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ) always clobbers reg byte a -Statement [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:11::loop:36 [ sin_idx#10 loop::s#2 loop::idx#2 ] ) always clobbers reg byte a -Statement [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:11::loop:36 [ sin_idx#10 loop::s#2 loop::idx#1 ] ) always clobbers reg byte a -Statement [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a +Statement [13] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [15] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [17] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [19] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:10 [ ] ) always clobbers reg byte a +Statement [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a +Statement [22] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::s2#0 ] ) always clobbers reg byte a +Statement [23] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a +Statement [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 main::$6 ] ) always clobbers reg byte a +Statement [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 [ main::s#2 main::xpos#2 main::ypos#2 ] ( main:10 [ main::s#2 main::xpos#2 main::ypos#2 ] ) always clobbers reg byte a +Statement [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 [ main::s#2 main::ypos#2 main::xpos#1 ] ( main:10 [ main::s#2 main::ypos#2 main::xpos#1 ] ) always clobbers reg byte a +Statement [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 [ main::s#2 main::xpos#1 main::ypos#1 ] ( main:10 [ main::s#2 main::xpos#1 main::ypos#1 ] ) always clobbers reg byte a +Statement [39] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 [ sin_idx#10 ] ( main:10::loop:35 [ sin_idx#10 ] ) always clobbers reg byte a +Statement [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 loop::$1 ] ) always clobbers reg byte a +Statement [43] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte[$100]) SIN#0 + (byte) loop::idx#2) [ sin_idx#10 loop::s#2 loop::idx#2 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#2 ] ) always clobbers reg byte a +Statement [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a [ sin_idx#10 loop::s#2 loop::idx#1 ] ( main:10::loop:35 [ sin_idx#10 loop::s#2 loop::idx#1 ] ) always clobbers reg byte a +Statement [49] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a Statement asm { ldaCIA1_INTERRUPT } always clobbers reg byte a -Statement [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:11::sprites_irq_init:34 [ ] ) always clobbers reg byte a -Statement [61] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:11::sprites_init:19 [ ] ) always clobbers reg byte a -Statement [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a -Statement [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a -Statement [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:11::sprites_init:19 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a -Statement [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a -Statement [83] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a -Statement [91] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [92] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a -Statement [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x -Statement [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ( [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ) always clobbers reg byte a reg byte x -Statement [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ( [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ) always clobbers reg byte a reg byte x -Statement [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a -Statement [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a -Statement [99] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y -Statement [100] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ) always clobbers reg byte a -Statement [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ) always clobbers reg byte a -Statement [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ) always clobbers reg byte a reg byte x -Statement [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ( [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ) always clobbers reg byte a reg byte x -Statement [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_cnt#1 irq_raster_next#1 ] ( [ irq_cnt#1 irq_raster_next#1 ] ) always clobbers reg byte a reg byte x -Statement [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ) always clobbers reg byte a -Statement [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ) always clobbers reg byte a +Statement [51] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [52] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [53] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [54] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [55] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [56] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [57] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() [ ] ( main:10::sprites_irq_init:33 [ ] ) always clobbers reg byte a +Statement [60] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [61] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [62] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [63] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:10::sprites_init:18 [ ] ) always clobbers reg byte a +Statement [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 sprites_init::s2#0 ] ) always clobbers reg byte a +Statement [66] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [67] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 [ sprites_init::s#2 sprites_init::xpos#2 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#2 ] ) always clobbers reg byte a +Statement [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 [ sprites_init::s#2 sprites_init::xpos#1 ] ( main:10::sprites_init:18 [ sprites_init::s#2 sprites_init::xpos#1 ] ) always clobbers reg byte a +Statement [80] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ( [ render_screen_showing#0 irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::raster_sprite_gfx_modify#0 ] ) always clobbers reg byte a +Statement [82] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#0 sprites_irq::ptr#0 ] ) always clobbers reg byte a +Statement [90] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [91] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ( [ irq_raster_next#0 irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 ] ) always clobbers reg byte a +Statement [92] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 ] ) always clobbers reg byte a reg byte x +Statement [93] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ( [ irq_sprite_ptr#0 irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 ] ) always clobbers reg byte a reg byte x +Statement [94] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ( [ irq_cnt#1 irq_raster_next#3 irq_sprite_ypos#3 irq_sprite_ptr#3 ] ) always clobbers reg byte a reg byte x +Statement [96] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 [ ] ( [ ] ) always clobbers reg byte a +Statement [97] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a +Statement [98] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y +Statement [99] (byte) irq_cnt#2 ← (byte) 0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_cnt#2 ] ) always clobbers reg byte a +Statement [100] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ( [ irq_sprite_ypos#0 irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 ] ) always clobbers reg byte a +Statement [101] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ( [ irq_sprite_ptr#0 irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 ] ) always clobbers reg byte a reg byte x +Statement [102] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ( [ irq_raster_next#2 irq_cnt#2 irq_sprite_ypos#2 irq_sprite_ptr#2 ] ) always clobbers reg byte a reg byte x +Statement [103] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 [ irq_cnt#1 irq_raster_next#1 ] ( [ irq_cnt#1 irq_raster_next#1 ] ) always clobbers reg byte a reg byte x +Statement [104] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 ] ) always clobbers reg byte a +Statement [106] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ( [ irq_cnt#1 irq_raster_next#1 irq_sprite_ypos#1 irq_sprite_ptr#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::s#2 main::s#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -3030,42 +3022,42 @@ Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:8 [ sprites_init::s#2 sprites_init: Uplift Scope [sprites_irq] 6.5: zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] 4: zp ZP_BYTE:21 [ sprites_irq::$0 ] 4: zp ZP_BYTE:24 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:26 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:23 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:22 [ sprites_irq::ptr#0 ] Uplift Scope [sprites_irq_init] -Uplifting [loop] best 16522 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] reg byte a [ loop::$1 ] reg byte x [ loop::idx#2 loop::idx#0 loop::idx#1 ] -Uplifting [] best 16522 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:11 [ render_screen_showing#0 ] -Uplifting [main] best 16242 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$6 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] +Uplifting [loop] best 13962 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] reg byte a [ loop::$1 ] reg byte x [ loop::idx#2 loop::idx#0 loop::idx#1 ] +Uplifting [] best 13962 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:11 [ render_screen_showing#0 ] +Uplifting [main] best 13682 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$6 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] Limited combination testing to 100 combinations of 324 possible. -Uplifting [sprites_init] best 16072 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_irq] best 16048 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] zp ZP_BYTE:22 [ sprites_irq::ptr#0 ] +Uplifting [sprites_init] best 13512 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_irq] best 13488 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] zp ZP_BYTE:22 [ sprites_irq::ptr#0 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [sprites_irq_init] best 16048 combination +Uplifting [sprites_irq_init] best 13488 combination Attempting to uplift remaining variables inzp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] -Uplifting [loop] best 16048 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] +Uplifting [loop] best 13488 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] -Uplifting [] best 16048 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] +Uplifting [] best 13488 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] -Uplifting [] best 16048 combination zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] +Uplifting [] best 13488 combination zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] -Uplifting [] best 16048 combination zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] +Uplifting [] best 13488 combination zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] -Uplifting [] best 16048 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] +Uplifting [] best 13488 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] -Uplifting [sprites_init] best 16048 combination zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] +Uplifting [sprites_init] best 13488 combination zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] -Uplifting [] best 16048 combination zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] +Uplifting [] best 13488 combination zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] -Uplifting [main] best 16048 combination zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] +Uplifting [main] best 13488 combination zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] -Uplifting [main] best 16048 combination zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] +Uplifting [main] best 13488 combination zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] -Uplifting [sprites_irq] best 16048 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] +Uplifting [sprites_irq] best 13488 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ sprites_irq::ptr#1 ] -Uplifting [sprites_irq] best 16036 combination reg byte x [ sprites_irq::ptr#1 ] +Uplifting [sprites_irq] best 13476 combination reg byte x [ sprites_irq::ptr#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ sprites_irq::ypos#0 ] -Uplifting [sprites_irq] best 16021 combination reg byte a [ sprites_irq::ypos#0 ] +Uplifting [sprites_irq] best 13461 combination reg byte a [ sprites_irq::ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ sprites_irq::ptr#0 ] -Uplifting [sprites_irq] best 16006 combination reg byte x [ sprites_irq::ptr#0 ] +Uplifting [sprites_irq] best 13446 combination reg byte x [ sprites_irq::ptr#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_screen_showing#0 ] -Uplifting [] best 16006 combination zp ZP_BYTE:11 [ render_screen_showing#0 ] +Uplifting [] best 13446 combination zp ZP_BYTE:11 [ render_screen_showing#0 ] Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::xpos#2 main::xpos#1 ] Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ sin_idx#10 sin_idx#3 ] @@ -3078,9 +3070,9 @@ Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:10 [ irq_sprite_ypos#0 irq_sprite_ypos# Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:11 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] Allocated (was zp ZP_BYTE:15) zp ZP_BYTE:12 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] Interrupt procedure sprites_irq clobbers AXCNZV -Removing interrupt register storage sty regy+1 in SEG128 entry interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage regy: in SEG167 [99] return - exit interrupt(HARDWARE_CLOBBER) -Removing interrupt register storage ldy #00 in SEG167 [99] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage sty regy+1 in SEG127 entry interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage regy: in SEG166 [98] return - exit interrupt(HARDWARE_CLOBBER) +Removing interrupt register storage ldy #00 in SEG166 [98] return - exit interrupt(HARDWARE_CLOBBER) ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -3137,7 +3129,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label PLAYFIELD_CHARSET = $2800 // The Y-position of the first sprite row .const SPRITES_FIRST_YPOS = $31 - .label SIN = $1400 .label SIN_SPRITE = $2800 // Screen Sprite pointers on screen 1 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS @@ -3192,23 +3183,22 @@ b5: jmp b3 //SEG15 @3 b3: -//SEG16 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} -//SEG17 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} -//SEG18 [10] phi from @3 to @4 [phi:@3->@4] +//SEG16 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} +//SEG17 [9] phi from @3 to @4 [phi:@3->@4] b4_from_b3: jmp b4 -//SEG19 @4 +//SEG18 @4 b4: -//SEG20 [11] call main -//SEG21 [13] phi from @4 to main [phi:@4->main] +//SEG19 [10] call main +//SEG20 [12] phi from @4 to main [phi:@4->main] main_from_b4: jsr main -//SEG22 [12] phi from @4 to @end [phi:@4->@end] +//SEG21 [11] phi from @4 to @end [phi:@4->@end] bend_from_b4: jmp bend -//SEG23 @end +//SEG22 @end bend: -//SEG24 main +//SEG23 main main: { .const toSpritePtr2_return = SIN_SPRITE/$40 .const vicSelectGfxBank1_toDd001_return = 3 @@ -3216,468 +3206,474 @@ main: { .label xpos = 2 .label ypos = 3 jmp vicSelectGfxBank1 - //SEG25 main::vicSelectGfxBank1 + //SEG24 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG26 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG27 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG26 [14] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG28 main::vicSelectGfxBank1_toDd001 + //SEG27 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG29 main::vicSelectGfxBank1_@1 + //SEG28 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG30 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG29 [15] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG31 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG30 [16] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] toD0181_from_vicSelectGfxBank1_b1: jmp toD0181 - //SEG32 main::toD0181 + //SEG31 main::toD0181 toD0181: jmp b3 - //SEG33 main::@3 + //SEG32 main::@3 b3: - //SEG34 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG33 [17] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG35 [19] call sprites_init + //SEG34 [18] call sprites_init jsr sprites_init jmp b5 - //SEG36 main::@5 + //SEG35 main::@5 b5: - //SEG37 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 + //SEG36 [19] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG38 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG37 [20] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG39 [21] phi (byte) main::ypos#2 = (byte) $32 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 + //SEG38 [20] phi (byte) main::ypos#2 = (byte) $32 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 lda #$32 sta ypos - //SEG40 [21] phi (byte) main::xpos#2 = (byte) $18 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 + //SEG39 [20] phi (byte) main::xpos#2 = (byte) $18 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 lda #$18 sta xpos - //SEG41 [21] phi (byte) main::s#2 = (byte) 4 [phi:main::@5->main::@1#2] -- vbuyy=vbuc1 + //SEG40 [20] phi (byte) main::s#2 = (byte) 4 [phi:main::@5->main::@1#2] -- vbuyy=vbuc1 ldy #4 jmp b1 - //SEG42 [21] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG41 [20] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG43 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@4->main::@1#0] -- register_copy - //SEG44 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@4->main::@1#1] -- register_copy - //SEG45 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@4->main::@1#2] -- register_copy + //SEG42 [20] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG43 [20] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@4->main::@1#1] -- register_copy + //SEG44 [20] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@4->main::@1#2] -- register_copy jmp b1 - //SEG46 main::@1 + //SEG45 main::@1 b1: - //SEG47 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG46 [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG48 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG47 [22] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG49 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG48 [23] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda ypos sta SPRITES_YPOS,x - //SEG50 [25] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 -- vbuaa=vbuyy_minus_vbuc1 + //SEG49 [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 -- vbuaa=vbuyy_minus_vbuc1 tya sec sbc #3 - //SEG51 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG50 [25] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_COLS,y - //SEG52 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] + //SEG51 [26] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] toSpritePtr2_from_b1: jmp toSpritePtr2 - //SEG53 main::toSpritePtr2 + //SEG52 main::toSpritePtr2 toSpritePtr2: jmp b4 - //SEG54 main::@4 + //SEG53 main::@4 b4: - //SEG55 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG54 [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #toSpritePtr2_return sta PLAYFIELD_SPRITE_PTRS_1,y - //SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG55 [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG56 [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax ypos axs #-[$18] stx ypos - //SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy + //SEG57 [30] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy iny - //SEG59 [32] if((byte) main::s#1!=(byte) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG58 [31] if((byte) main::s#1!=(byte) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b1_from_b4 - //SEG60 [33] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG59 [32] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: jmp b2 - //SEG61 main::@2 + //SEG60 main::@2 b2: - //SEG62 [34] call sprites_irq_init + //SEG61 [33] call sprites_irq_init jsr sprites_irq_init - //SEG63 [35] phi from main::@2 to main::@6 [phi:main::@2->main::@6] + //SEG62 [34] phi from main::@2 to main::@6 [phi:main::@2->main::@6] b6_from_b2: jmp b6 - //SEG64 main::@6 + //SEG63 main::@6 b6: - //SEG65 [36] call loop - //SEG66 [38] phi from main::@6 to loop [phi:main::@6->loop] + //SEG64 [35] call loop + //SEG65 [37] phi from main::@6 to loop [phi:main::@6->loop] loop_from_b6: jsr loop jmp breturn - //SEG67 main::@return + //SEG66 main::@return breturn: - //SEG68 [37] return + //SEG67 [36] return rts } -//SEG69 loop +//SEG68 loop loop: { .label s = 5 - //SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG69 [38] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: - //SEG71 [39] phi (byte) sin_idx#10 = (byte) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG70 [38] phi (byte) sin_idx#10 = (byte) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx jmp b1 - //SEG72 loop::@1 + //SEG71 loop::@1 b1: jmp b2 - //SEG73 loop::@2 + //SEG72 loop::@2 b2: - //SEG74 [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG73 [39] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 jmp b3 - //SEG75 loop::@3 + //SEG74 loop::@3 b3: - //SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuxx=vbuz1 + //SEG75 [40] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuxx=vbuz1 ldx sin_idx - //SEG77 [42] phi from loop::@3 to loop::@4 [phi:loop::@3->loop::@4] + //SEG76 [41] phi from loop::@3 to loop::@4 [phi:loop::@3->loop::@4] b4_from_b3: - //SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@3->loop::@4#0] -- register_copy - //SEG79 [42] phi (byte) loop::s#2 = (byte) 4 [phi:loop::@3->loop::@4#1] -- vbuz1=vbuc1 + //SEG77 [41] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@3->loop::@4#0] -- register_copy + //SEG78 [41] phi (byte) loop::s#2 = (byte) 4 [phi:loop::@3->loop::@4#1] -- vbuz1=vbuc1 lda #4 sta s jmp b4 - //SEG80 [42] phi from loop::@4 to loop::@4 [phi:loop::@4->loop::@4] + //SEG79 [41] phi from loop::@4 to loop::@4 [phi:loop::@4->loop::@4] b4_from_b4: - //SEG81 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@4->loop::@4#0] -- register_copy - //SEG82 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@4->loop::@4#1] -- register_copy + //SEG80 [41] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@4->loop::@4#0] -- register_copy + //SEG81 [41] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@4->loop::@4#1] -- register_copy jmp b4 - //SEG83 loop::@4 + //SEG82 loop::@4 b4: - //SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG83 [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda s asl - //SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx + //SEG84 [43] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte[$100]) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx tay lda SIN,x sta SPRITES_YPOS,y - //SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a -- vbuxx=vbuxx_plus_vbuc1 + //SEG85 [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[$a] - //SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 + //SEG86 [45] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG88 [47] if((byte) loop::s#1!=(byte) 8) goto loop::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG87 [46] if((byte) loop::s#1!=(byte) 8) goto loop::@4 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp s bne b4_from_b4 jmp b5 - //SEG89 loop::@5 + //SEG88 loop::@5 b5: - //SEG90 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 + //SEG89 [47] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 inc sin_idx - //SEG91 [39] phi from loop::@5 to loop::@1 [phi:loop::@5->loop::@1] + //SEG90 [38] phi from loop::@5 to loop::@1 [phi:loop::@5->loop::@1] b1_from_b5: - //SEG92 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@5->loop::@1#0] -- register_copy + //SEG91 [38] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@5->loop::@1#0] -- register_copy jmp b1 } -//SEG93 sprites_irq_init +//SEG92 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG94 asm { sei } + //SEG93 asm { sei } sei - //SEG95 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG94 [49] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG96 asm { ldaCIA1_INTERRUPT } + //SEG95 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG97 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG96 [51] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG98 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG97 [52] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG99 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG98 [53] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG100 [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG99 [54] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG100 [55] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG102 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG101 [56] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG103 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG102 [57] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG104 asm { cli } + //SEG103 asm { cli } cli jmp breturn - //SEG105 sprites_irq_init::@return + //SEG104 sprites_irq_init::@return breturn: - //SEG106 [60] return + //SEG105 [59] return rts } -//SEG107 sprites_init +//SEG106 sprites_init // Setup the sprites sprites_init: { .label xpos = 6 - //SEG108 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 + //SEG107 [60] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG109 [62] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG108 [61] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG110 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG109 [62] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_MC sta SPRITES_EXPAND_Y - //SEG111 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG110 [63] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 lda SPRITES_EXPAND_Y sta SPRITES_EXPAND_X - //SEG112 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG111 [64] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG112 [64] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG114 [65] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 + //SEG113 [64] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG114 [64] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG116 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG117 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG115 [64] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG116 [64] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy jmp b1 - //SEG118 sprites_init::@1 + //SEG117 sprites_init::@1 b1: - //SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG118 [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG119 [66] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG120 [67] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #BLACK sta SPRITES_COLS,y - //SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG121 [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy + //SEG122 [69] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy iny - //SEG124 [71] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG123 [70] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #4 bne b1_from_b1 jmp breturn - //SEG125 sprites_init::@return + //SEG124 sprites_init::@return breturn: - //SEG126 [72] return + //SEG125 [71] return rts } -//SEG127 sprites_irq +//SEG126 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES/$40 .label raster_sprite_gfx_modify = 7 - //SEG128 entry interrupt(HARDWARE_CLOBBER) + //SEG127 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG129 asm { cld } + //SEG128 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG130 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG129 [73] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 // Place the sprites lda irq_sprite_ypos - //SEG131 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG130 [74] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG131 [75] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG134 [78] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG135 [79] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 + //SEG134 [78] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG136 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG135 [79] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx // Wait for the y-position before changing sprite pointers stx raster_sprite_gfx_modify jmp b8 - //SEG137 sprites_irq::@8 + //SEG136 sprites_irq::@8 b8: - //SEG138 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG137 [80] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 jmp b9 - //SEG139 sprites_irq::@9 + //SEG138 sprites_irq::@9 b9: - //SEG140 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG139 [81] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG141 [83] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG140 [82] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 jmp b10 - //SEG142 sprites_irq::@10 + //SEG141 sprites_irq::@10 b10: - //SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG142 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG143 [84] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx inx txa - //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG144 [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG147 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG146 [87] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG148 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG147 [88] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 jmp b2 - //SEG149 sprites_irq::@2 + //SEG148 sprites_irq::@2 b2: - //SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG149 [89] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG151 [91] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG150 [90] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 jmp b6 - //SEG152 sprites_irq::@6 + //SEG151 sprites_irq::@6 b6: - //SEG153 [92] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG152 [91] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 jmp b7 - //SEG154 sprites_irq::@7 + //SEG153 sprites_irq::@7 b7: - //SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG154 [92] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG156 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG155 [93] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG156 [94] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG158 [96] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG157 [95] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] b5_from_b11: b5_from_b4: b5_from_b7: - //SEG159 [96] phi (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy - //SEG160 [96] phi (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#1] -- register_copy - //SEG161 [96] phi (byte) irq_cnt#3 = (byte) irq_cnt#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#2] -- register_copy - //SEG162 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#3] -- register_copy + //SEG158 [95] phi (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG159 [95] phi (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#1] -- register_copy + //SEG160 [95] phi (byte) irq_cnt#3 = (byte) irq_cnt#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#2] -- register_copy + //SEG161 [95] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#3] -- register_copy jmp b5 - //SEG163 sprites_irq::@5 + //SEG162 sprites_irq::@5 b5: - //SEG164 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG163 [96] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG165 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG164 [97] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS jmp breturn - //SEG166 sprites_irq::@return + //SEG165 sprites_irq::@return breturn: - //SEG167 [99] return - exit interrupt(HARDWARE_CLOBBER) + //SEG166 [98] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG168 sprites_irq::@4 + //SEG167 sprites_irq::@4 b4: - //SEG169 [100] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 + //SEG168 [99] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG170 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG169 [100] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG171 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG170 [101] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG172 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG171 [102] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5_from_b4 - //SEG173 sprites_irq::@3 + //SEG172 sprites_irq::@3 b3: - //SEG174 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG173 [103] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG175 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG174 [104] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG176 [106] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG175 [105] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] toSpritePtr2_from_b3: jmp toSpritePtr2 - //SEG177 sprites_irq::toSpritePtr2 + //SEG176 sprites_irq::toSpritePtr2 toSpritePtr2: jmp b11 - //SEG178 sprites_irq::@11 + //SEG177 sprites_irq::@11 b11: - //SEG179 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG178 [106] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5_from_b11 - //SEG180 sprites_irq::@1 + //SEG179 sprites_irq::@1 b1: - //SEG181 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG180 [107] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG182 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx + //SEG181 [108] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG183 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG182 [109] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG184 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG183 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG185 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx + //SEG184 [111] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx inx txa - //SEG186 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG185 [112] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } -//SEG187 File Data +//SEG186 File Data +SIN: +.var AMPL = 200-21 + .for(var i=0; i<256; i++) { + .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 + } + .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory @@ -3694,12 +3690,6 @@ sprites_irq: { } } -.pc = SIN "SIN" - .var AMPL = 200-21 - .for(var i=0; i<256; i++) { - .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 - } - .pc = SIN_SPRITE "SIN_SPRITE" .fill $40, $ff @@ -3865,8 +3855,12 @@ FINAL SYMBOL TABLE (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte) $35 (byte*) RASTER (const byte*) RASTER#0 RASTER = (byte*) 53266 -(byte*) SIN -(const byte*) SIN#0 SIN = (byte*) 5120 +(byte[$100]) SIN +(const byte[$100]) SIN#0 SIN = kickasm {{ .var AMPL = 200-21 + .for(var i=0; i<256; i++) { + .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 + } + }} (byte*) SIN_SPRITE (const byte*) SIN_SPRITE#0 SIN_SPRITE = (byte*) 10240 (byte*) SPRITES_COLS @@ -4064,7 +4058,7 @@ reg byte a [ sprites_irq::ptr#2 ] FINAL ASSEMBLER -Score: 14222 +Score: 11662 //SEG0 File Comments //SEG1 Basic Upstart @@ -4120,7 +4114,6 @@ Score: 14222 .label PLAYFIELD_CHARSET = $2800 // The Y-position of the first sprite row .const SPRITES_FIRST_YPOS = $31 - .label SIN = $1400 .label SIN_SPRITE = $2800 // Screen Sprite pointers on screen 1 .label PLAYFIELD_SPRITE_PTRS_1 = PLAYFIELD_SCREEN_1+SPRITE_PTRS @@ -4164,410 +4157,415 @@ bbegin: lda #0 sta irq_cnt //SEG15 @3 -//SEG16 kickasm(location (const byte*) SIN#0) {{ .var AMPL = 200-21 .for(var i=0; i<256; i++) { .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 } }} -//SEG17 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} -//SEG18 [10] phi from @3 to @4 [phi:@3->@4] -//SEG19 @4 -//SEG20 [11] call main -//SEG21 [13] phi from @4 to main [phi:@4->main] +//SEG16 kickasm(location (const byte*) SIN_SPRITE#0) {{ .fill $40, $ff }} +//SEG17 [9] phi from @3 to @4 [phi:@3->@4] +//SEG18 @4 +//SEG19 [10] call main +//SEG20 [12] phi from @4 to main [phi:@4->main] jsr main rts -//SEG22 [12] phi from @4 to @end [phi:@4->@end] -//SEG23 @end -//SEG24 main +//SEG21 [11] phi from @4 to @end [phi:@4->@end] +//SEG22 @end +//SEG23 main main: { .const toSpritePtr2_return = SIN_SPRITE/$40 .const vicSelectGfxBank1_toDd001_return = 3 .const toD0181_return = (>(PLAYFIELD_SCREEN_1&$3fff)*4)|(>PLAYFIELD_CHARSET)/4&$f .label xpos = 2 .label ypos = 3 - //SEG25 main::vicSelectGfxBank1 - //SEG26 [14] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG24 main::vicSelectGfxBank1 + //SEG25 [13] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG27 [15] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] - //SEG28 main::vicSelectGfxBank1_toDd001 - //SEG29 main::vicSelectGfxBank1_@1 - //SEG30 [16] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG26 [14] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG27 main::vicSelectGfxBank1_toDd001 + //SEG28 main::vicSelectGfxBank1_@1 + //SEG29 [15] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG31 [17] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] - //SEG32 main::toD0181 - //SEG33 main::@3 - //SEG34 [18] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG30 [16] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + //SEG31 main::toD0181 + //SEG32 main::@3 + //SEG33 [17] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG35 [19] call sprites_init + //SEG34 [18] call sprites_init jsr sprites_init - //SEG36 main::@5 - //SEG37 [20] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 + //SEG35 main::@5 + //SEG36 [19] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG38 [21] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG39 [21] phi (byte) main::ypos#2 = (byte) $32 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 + //SEG37 [20] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG38 [20] phi (byte) main::ypos#2 = (byte) $32 [phi:main::@5->main::@1#0] -- vbuz1=vbuc1 lda #$32 sta ypos - //SEG40 [21] phi (byte) main::xpos#2 = (byte) $18 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 + //SEG39 [20] phi (byte) main::xpos#2 = (byte) $18 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 lda #$18 sta xpos - //SEG41 [21] phi (byte) main::s#2 = (byte) 4 [phi:main::@5->main::@1#2] -- vbuyy=vbuc1 + //SEG40 [20] phi (byte) main::s#2 = (byte) 4 [phi:main::@5->main::@1#2] -- vbuyy=vbuc1 ldy #4 - //SEG42 [21] phi from main::@4 to main::@1 [phi:main::@4->main::@1] - //SEG43 [21] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@4->main::@1#0] -- register_copy - //SEG44 [21] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@4->main::@1#1] -- register_copy - //SEG45 [21] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@4->main::@1#2] -- register_copy - //SEG46 main::@1 + //SEG41 [20] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG42 [20] phi (byte) main::ypos#2 = (byte) main::ypos#1 [phi:main::@4->main::@1#0] -- register_copy + //SEG43 [20] phi (byte) main::xpos#2 = (byte) main::xpos#1 [phi:main::@4->main::@1#1] -- register_copy + //SEG44 [20] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@4->main::@1#2] -- register_copy + //SEG45 main::@1 b1: - //SEG47 [22] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG46 [21] (byte) main::s2#0 ← (byte) main::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG48 [23] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG47 [22] *((const byte*) SPRITES_XPOS#0 + (byte) main::s2#0) ← (byte) main::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG49 [24] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG48 [23] *((const byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda ypos sta SPRITES_YPOS,x - //SEG50 [25] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 -- vbuaa=vbuyy_minus_vbuc1 + //SEG49 [24] (byte~) main::$6 ← (byte) main::s#2 - (byte) 3 -- vbuaa=vbuyy_minus_vbuc1 tya sec sbc #3 - //SEG51 [26] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG50 [25] *((const byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte~) main::$6 -- pbuc1_derefidx_vbuyy=vbuaa sta SPRITES_COLS,y - //SEG52 [27] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] - //SEG53 main::toSpritePtr2 - //SEG54 main::@4 - //SEG55 [28] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG51 [26] phi from main::@1 to main::toSpritePtr2 [phi:main::@1->main::toSpritePtr2] + //SEG52 main::toSpritePtr2 + //SEG53 main::@4 + //SEG54 [27] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0 + (byte) main::s#2) ← (const byte) main::toSpritePtr2_return#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #toSpritePtr2_return sta PLAYFIELD_SPRITE_PTRS_1,y - //SEG56 [29] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG55 [28] (byte) main::xpos#1 ← (byte) main::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG57 [30] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG56 [29] (byte) main::ypos#1 ← (byte) main::ypos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax ypos axs #-[$18] stx ypos - //SEG58 [31] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy + //SEG57 [30] (byte) main::s#1 ← ++ (byte) main::s#2 -- vbuyy=_inc_vbuyy iny - //SEG59 [32] if((byte) main::s#1!=(byte) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG58 [31] if((byte) main::s#1!=(byte) 8) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b1 - //SEG60 [33] phi from main::@4 to main::@2 [phi:main::@4->main::@2] - //SEG61 main::@2 - //SEG62 [34] call sprites_irq_init + //SEG59 [32] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG60 main::@2 + //SEG61 [33] call sprites_irq_init jsr sprites_irq_init - //SEG63 [35] phi from main::@2 to main::@6 [phi:main::@2->main::@6] - //SEG64 main::@6 - //SEG65 [36] call loop - //SEG66 [38] phi from main::@6 to loop [phi:main::@6->loop] + //SEG62 [34] phi from main::@2 to main::@6 [phi:main::@2->main::@6] + //SEG63 main::@6 + //SEG64 [35] call loop + //SEG65 [37] phi from main::@6 to loop [phi:main::@6->loop] jsr loop - //SEG67 main::@return - //SEG68 [37] return + //SEG66 main::@return + //SEG67 [36] return rts } -//SEG69 loop +//SEG68 loop loop: { .label s = 5 - //SEG70 [39] phi from loop to loop::@1 [phi:loop->loop::@1] - //SEG71 [39] phi (byte) sin_idx#10 = (byte) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 + //SEG69 [38] phi from loop to loop::@1 [phi:loop->loop::@1] + //SEG70 [38] phi (byte) sin_idx#10 = (byte) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 sta sin_idx - //SEG72 loop::@1 - //SEG73 loop::@2 + //SEG71 loop::@1 + //SEG72 loop::@2 b2: - //SEG74 [40] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG73 [39] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 - //SEG75 loop::@3 - //SEG76 [41] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuxx=vbuz1 + //SEG74 loop::@3 + //SEG75 [40] (byte) loop::idx#0 ← (byte) sin_idx#10 -- vbuxx=vbuz1 ldx sin_idx - //SEG77 [42] phi from loop::@3 to loop::@4 [phi:loop::@3->loop::@4] - //SEG78 [42] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@3->loop::@4#0] -- register_copy - //SEG79 [42] phi (byte) loop::s#2 = (byte) 4 [phi:loop::@3->loop::@4#1] -- vbuz1=vbuc1 + //SEG76 [41] phi from loop::@3 to loop::@4 [phi:loop::@3->loop::@4] + //SEG77 [41] phi (byte) loop::idx#2 = (byte) loop::idx#0 [phi:loop::@3->loop::@4#0] -- register_copy + //SEG78 [41] phi (byte) loop::s#2 = (byte) 4 [phi:loop::@3->loop::@4#1] -- vbuz1=vbuc1 lda #4 sta s - //SEG80 [42] phi from loop::@4 to loop::@4 [phi:loop::@4->loop::@4] - //SEG81 [42] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@4->loop::@4#0] -- register_copy - //SEG82 [42] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@4->loop::@4#1] -- register_copy - //SEG83 loop::@4 + //SEG79 [41] phi from loop::@4 to loop::@4 [phi:loop::@4->loop::@4] + //SEG80 [41] phi (byte) loop::idx#2 = (byte) loop::idx#1 [phi:loop::@4->loop::@4#0] -- register_copy + //SEG81 [41] phi (byte) loop::s#2 = (byte) loop::s#1 [phi:loop::@4->loop::@4#1] -- register_copy + //SEG82 loop::@4 b4: - //SEG84 [43] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 + //SEG83 [42] (byte~) loop::$1 ← (byte) loop::s#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 lda s asl - //SEG85 [44] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte*) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx + //SEG84 [43] *((const byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((const byte[$100]) SIN#0 + (byte) loop::idx#2) -- pbuc1_derefidx_vbuaa=pbuc2_derefidx_vbuxx tay lda SIN,x sta SPRITES_YPOS,y - //SEG86 [45] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a -- vbuxx=vbuxx_plus_vbuc1 + //SEG85 [44] (byte) loop::idx#1 ← (byte) loop::idx#2 + (byte) $a -- vbuxx=vbuxx_plus_vbuc1 txa axs #-[$a] - //SEG87 [46] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 + //SEG86 [45] (byte) loop::s#1 ← ++ (byte) loop::s#2 -- vbuz1=_inc_vbuz1 inc s - //SEG88 [47] if((byte) loop::s#1!=(byte) 8) goto loop::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG87 [46] if((byte) loop::s#1!=(byte) 8) goto loop::@4 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp s bne b4 - //SEG89 loop::@5 - //SEG90 [48] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 + //SEG88 loop::@5 + //SEG89 [47] (byte) sin_idx#3 ← ++ (byte) sin_idx#10 -- vbuz1=_inc_vbuz1 inc sin_idx - //SEG91 [39] phi from loop::@5 to loop::@1 [phi:loop::@5->loop::@1] - //SEG92 [39] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@5->loop::@1#0] -- register_copy + //SEG90 [38] phi from loop::@5 to loop::@1 [phi:loop::@5->loop::@1] + //SEG91 [38] phi (byte) sin_idx#10 = (byte) sin_idx#3 [phi:loop::@5->loop::@1#0] -- register_copy jmp b2 } -//SEG93 sprites_irq_init +//SEG92 sprites_irq_init // Setup the IRQ sprites_irq_init: { - //SEG94 asm { sei } + //SEG93 asm { sei } sei - //SEG95 [50] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG94 [49] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge any IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG96 asm { ldaCIA1_INTERRUPT } + //SEG95 asm { ldaCIA1_INTERRUPT } lda CIA1_INTERRUPT - //SEG97 [52] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG96 [51] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG98 [53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG97 [52] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG99 [54] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + //SEG98 [53] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 // Disable CIA 1 Timer IRQ lda #CIA_INTERRUPT_CLEAR sta CIA1_INTERRUPT - //SEG100 [55] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + //SEG99 [54] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 // Set raster line lda #$7f and VIC_CONTROL sta VIC_CONTROL - //SEG101 [56] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + //SEG100 [55] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 lda #IRQ_RASTER_FIRST sta RASTER - //SEG102 [57] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG101 [56] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Enable Raster Interrupt lda #IRQ_RASTER sta IRQ_ENABLE - //SEG103 [58] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 + //SEG102 [57] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq() -- _deref_pptc1=pprc2 // Set the IRQ routine lda #sprites_irq sta HARDWARE_IRQ+1 - //SEG104 asm { cli } + //SEG103 asm { cli } cli - //SEG105 sprites_irq_init::@return - //SEG106 [60] return + //SEG104 sprites_irq_init::@return + //SEG105 [59] return rts } -//SEG107 sprites_init +//SEG106 sprites_init // Setup the sprites sprites_init: { .label xpos = 6 - //SEG108 [61] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 + //SEG107 [60] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f -- _deref_pbuc1=vbuc2 lda #$f sta SPRITES_ENABLE - //SEG109 [62] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 + //SEG108 [61] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta SPRITES_MC - //SEG110 [63] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG109 [62] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_Y - //SEG111 [64] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG110 [63] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 sta SPRITES_EXPAND_X - //SEG112 [65] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] - //SEG113 [65] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG111 [64] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG112 [64] phi (byte) sprites_init::xpos#2 = (byte)(number) $18+(number) $f*(number) 8 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #$18+$f*8 sta xpos - //SEG114 [65] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 + //SEG113 [64] phi (byte) sprites_init::s#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#1] -- vbuyy=vbuc1 ldy #0 - //SEG115 [65] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG116 [65] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG117 [65] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy - //SEG118 sprites_init::@1 + //SEG114 [64] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG115 [64] phi (byte) sprites_init::xpos#2 = (byte) sprites_init::xpos#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG116 [64] phi (byte) sprites_init::s#2 = (byte) sprites_init::s#1 [phi:sprites_init::@1->sprites_init::@1#1] -- register_copy + //SEG117 sprites_init::@1 b1: - //SEG119 [66] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 + //SEG118 [65] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1 -- vbuxx=vbuyy_rol_1 tya asl tax - //SEG120 [67] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG119 [66] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda xpos sta SPRITES_XPOS,x - //SEG121 [68] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG120 [67] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #BLACK sta SPRITES_COLS,y - //SEG122 [69] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 + //SEG121 [68] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18 -- vbuz1=vbuz1_plus_vbuc1 lax xpos axs #-[$18] stx xpos - //SEG123 [70] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy + //SEG122 [69] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2 -- vbuyy=_inc_vbuyy iny - //SEG124 [71] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 + //SEG123 [70] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1 -- vbuyy_neq_vbuc1_then_la1 cpy #4 bne b1 - //SEG125 sprites_init::@return - //SEG126 [72] return + //SEG124 sprites_init::@return + //SEG125 [71] return rts } -//SEG127 sprites_irq +//SEG126 sprites_irq // Raster Interrupt Routine - sets up the sprites covering the playfield // Repeats 10 timers every 2 lines from line IRQ_RASTER_FIRST // Utilizes duplicated gfx in the sprites to allow for some leeway in updating the sprite pointers sprites_irq: { .const toSpritePtr2_return = PLAYFIELD_SPRITES/$40 .label raster_sprite_gfx_modify = 7 - //SEG128 entry interrupt(HARDWARE_CLOBBER) + //SEG127 entry interrupt(HARDWARE_CLOBBER) sta rega+1 stx regx+1 - //SEG129 asm { cld } + //SEG128 asm { cld } //(*BGCOL)++; // Clear decimal flag (because it is used by the score algorithm) cld - //SEG130 [74] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 + //SEG129 [73] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0 -- vbuaa=vbuz1 // Place the sprites lda irq_sprite_ypos - //SEG131 [75] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG130 [74] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS - //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG131 [75] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+2 - //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG132 [76] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+4 - //SEG134 [78] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa + //SEG133 [77] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0 -- _deref_pbuc1=vbuaa sta SPRITES_YPOS+6 - //SEG135 [79] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 + //SEG134 [78] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx irq_raster_next inx - //SEG136 [80] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx + //SEG135 [79] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0 -- vbuz1=vbuxx // Wait for the y-position before changing sprite pointers stx raster_sprite_gfx_modify - //SEG137 sprites_irq::@8 + //SEG136 sprites_irq::@8 b8: - //SEG138 [81] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 + //SEG137 [80] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8 -- _deref_pbuc1_lt_vbuz1_then_la1 lda RASTER cmp raster_sprite_gfx_modify bcc b8 - //SEG139 sprites_irq::@9 - //SEG140 [82] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 + //SEG138 sprites_irq::@9 + //SEG139 [81] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0 -- vbuxx=vbuz1 ldx irq_sprite_ptr - //SEG141 [83] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 + //SEG140 [82] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1 -- vbuz1_eq_0_then_la1 lda render_screen_showing cmp #0 beq b1 - //SEG142 sprites_irq::@10 - //SEG143 [84] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG141 sprites_irq::@10 + //SEG142 [83] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_2 - //SEG144 [85] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx + //SEG143 [84] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0 -- vbuaa=_inc_vbuxx inx txa - //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG144 [85] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+1 - //SEG146 [87] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa + //SEG145 [86] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+2 - //SEG147 [88] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa + //SEG146 [87] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3 -- vbuaa=_inc_vbuaa clc adc #1 - //SEG148 [89] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa + //SEG147 [88] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_2+3 - //SEG149 sprites_irq::@2 + //SEG148 sprites_irq::@2 b2: - //SEG150 [90] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + //SEG149 [89] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 inc irq_cnt - //SEG151 [91] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 + //SEG150 [90] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3 -- vbuz1_eq_vbuc1_then_la1 lda #9 cmp irq_cnt beq b3 - //SEG152 sprites_irq::@6 - //SEG153 [92] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 + //SEG151 sprites_irq::@6 + //SEG152 [91] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4 -- vbuz1_eq_vbuc1_then_la1 lda #$a cmp irq_cnt beq b4 - //SEG154 sprites_irq::@7 - //SEG155 [93] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 + //SEG153 sprites_irq::@7 + //SEG154 [92] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$14] stx irq_raster_next - //SEG156 [94] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG155 [93] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG157 [95] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG156 [94] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr - //SEG158 [96] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] - //SEG159 [96] phi (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy - //SEG160 [96] phi (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#1] -- register_copy - //SEG161 [96] phi (byte) irq_cnt#3 = (byte) irq_cnt#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#2] -- register_copy - //SEG162 [96] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#3] -- register_copy - //SEG163 sprites_irq::@5 + //SEG157 [95] phi from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7 to sprites_irq::@5 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5] + //SEG158 [95] phi (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#0] -- register_copy + //SEG159 [95] phi (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#1] -- register_copy + //SEG160 [95] phi (byte) irq_cnt#3 = (byte) irq_cnt#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#2] -- register_copy + //SEG161 [95] phi (byte) irq_raster_next#4 = (byte) irq_raster_next#1 [phi:sprites_irq::@11/sprites_irq::@4/sprites_irq::@7->sprites_irq::@5#3] -- register_copy + //SEG162 sprites_irq::@5 b5: - //SEG164 [97] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 + //SEG163 [96] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4 -- _deref_pbuc1=vbuz1 // Setup next interrupt lda irq_raster_next sta RASTER - //SEG165 [98] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + //SEG164 [97] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 // Acknowledge the IRQ and setup the next one lda #IRQ_RASTER sta IRQ_STATUS - //SEG166 sprites_irq::@return - //SEG167 [99] return - exit interrupt(HARDWARE_CLOBBER) + //SEG165 sprites_irq::@return + //SEG166 [98] return - exit interrupt(HARDWARE_CLOBBER) rega: lda #00 regx: ldx #00 rti - //SEG168 sprites_irq::@4 + //SEG167 sprites_irq::@4 b4: - //SEG169 [100] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 + //SEG168 [99] (byte) irq_cnt#2 ← (byte) 0 -- vbuz1=vbuc1 lda #0 sta irq_cnt - //SEG170 [101] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + //SEG169 [100] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 lda #IRQ_RASTER_FIRST sta irq_raster_next - //SEG171 [102] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG170 [101] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ypos axs #-[$15] stx irq_sprite_ypos - //SEG172 [103] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 + //SEG171 [102] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1 lax irq_sprite_ptr axs #-[3] stx irq_sprite_ptr jmp b5 - //SEG173 sprites_irq::@3 + //SEG172 sprites_irq::@3 b3: - //SEG174 [104] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 + //SEG173 [103] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15 -- vbuz1=vbuz1_plus_vbuc1 lax irq_raster_next axs #-[$15] stx irq_raster_next - //SEG175 [105] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 + //SEG174 [104] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0 -- vbuz1=vbuc1 lda #SPRITES_FIRST_YPOS sta irq_sprite_ypos - //SEG176 [106] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] - //SEG177 sprites_irq::toSpritePtr2 - //SEG178 sprites_irq::@11 - //SEG179 [107] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 + //SEG175 [105] phi from sprites_irq::@3 to sprites_irq::toSpritePtr2 [phi:sprites_irq::@3->sprites_irq::toSpritePtr2] + //SEG176 sprites_irq::toSpritePtr2 + //SEG177 sprites_irq::@11 + //SEG178 [106] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0 -- vbuz1=vbuc1 lda #toSpritePtr2_return sta irq_sprite_ptr jmp b5 - //SEG180 sprites_irq::@1 + //SEG179 sprites_irq::@1 b1: - //SEG181 [108] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx + //SEG180 [107] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1 - //SEG182 [109] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx + //SEG181 [108] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0 -- vbuxx=_inc_vbuxx inx - //SEG183 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG182 [109] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+1 - //SEG184 [111] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx + //SEG183 [110] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1 -- _deref_pbuc1=vbuxx stx PLAYFIELD_SPRITE_PTRS_1+2 - //SEG185 [112] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx + //SEG184 [111] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1 -- vbuaa=_inc_vbuxx inx txa - //SEG186 [113] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa + //SEG185 [112] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2 -- _deref_pbuc1=vbuaa sta PLAYFIELD_SPRITE_PTRS_1+3 jmp b2 } -//SEG187 File Data +//SEG186 File Data +SIN: +.var AMPL = 200-21 + .for(var i=0; i<256; i++) { + .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 + } + .pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES" .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000)) // Put the sprites into memory @@ -4584,12 +4582,6 @@ sprites_irq: { } } -.pc = SIN "SIN" - .var AMPL = 200-21 - .for(var i=0; i<256; i++) { - .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 - } - .pc = SIN_SPRITE "SIN_SPRITE" .fill $40, $ff diff --git a/src/test/ref/complex/tetris/test-sprites.sym b/src/test/ref/complex/tetris/test-sprites.sym index d49e5e0fa..90da6bc68 100644 --- a/src/test/ref/complex/tetris/test-sprites.sym +++ b/src/test/ref/complex/tetris/test-sprites.sym @@ -49,8 +49,12 @@ (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte) $35 (byte*) RASTER (const byte*) RASTER#0 RASTER = (byte*) 53266 -(byte*) SIN -(const byte*) SIN#0 SIN = (byte*) 5120 +(byte[$100]) SIN +(const byte[$100]) SIN#0 SIN = kickasm {{ .var AMPL = 200-21 + .for(var i=0; i<256; i++) { + .byte 51+AMPL/2+sin(toRadians([i*360]/256))*AMPL/2 + } + }} (byte*) SIN_SPRITE (const byte*) SIN_SPRITE#0 SIN_SPRITE = (byte*) 10240 (byte*) SPRITES_COLS diff --git a/src/test/ref/examples/3d/3d.asm b/src/test/ref/examples/3d/3d.asm index 163b354fc..4daccdbba 100644 --- a/src/test/ref/examples/3d/3d.asm +++ b/src/test/ref/examples/3d/3d.asm @@ -28,39 +28,12 @@ .label psp2 = $f8 .label SCREEN = $400 .const sz = 0 - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2400 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2600 // A single sprite .label SPRITE = $3000 - // Perspective multiplication table containing (d/(z0-z)[z] for each z-value - .label PERSP_Z = $2800 - // Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$20;20] - .label SINH = $2000 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$10,$10] - .label SINQ = $2200 - // 16 bit Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$1f,$1f] - .label SINH_LO = $4000 - // sin(x) = cos(x+PI/2) - .label SINH_HI = $4200 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$0f,$0f] - .label SINQ_LO = $4400 - // sin(x) = cos(x+PI/2) - .label SINQ_HI = $4600 .label COSH = SINH+$40 .label COSQ = SINQ+$40 .label sx = 2 .label sy = 3 -// sin(x) = cos(x+PI/2) -// sin(x) = cos(x+PI/2) main: { sei jsr sprites_init @@ -1031,28 +1004,29 @@ sprites_init: { yps: .fill 8, 0 // The rotation matrix rotation_matrix: .fill 9, 0 -.pc = mulf_sqr1 "mulf_sqr1" - .for(var i=0;i<$200;i++) { + // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). + // f(x) = >(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } -.pc = SPRITE "SPRITE" - .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) - .for (var y=0; y<21; y++) - .for (var x=0;x<3; x++) - .byte pic.getSinglecolorByte(x,y) - -.pc = PERSP_Z "PERSP_Z" - { + // Perspective multiplication table containing (d/(z0-z)[z] for each z-value + .align $100 +PERSP_Z: +{ .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) @@ -1065,8 +1039,12 @@ sprites_init: { } } -.pc = SINH "SINH" - { + // Sine and Cosine Tables + // Angles: $00=0, $80=PI,$100=2*PI + // Half Sine/Cosine: signed fixed [-$20;20] + .align $40 +SINH: +{ .var min = -$2000 .var max = $2000 .var ampl = max-min; @@ -1076,8 +1054,10 @@ sprites_init: { } } -.pc = SINQ "SINQ" - { + // Quarter Sine/Cosine: signed fixed [-$10,$10] + .align $40 +SINQ: +{ .var min = -$1000 .var max = $1000 .var ampl = max-min; @@ -1087,47 +1067,9 @@ sprites_init: { } } -.pc = SINH_LO "SINH_LO" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINH_HI "SINH_HI" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_LO "SINQ_LO" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_HI "SINQ_HI" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } +.pc = SPRITE "SPRITE" + .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) + .for (var y=0; y<21; y++) + .for (var x=0;x<3; x++) + .byte pic.getSinglecolorByte(x,y) diff --git a/src/test/ref/examples/3d/3d.cfg b/src/test/ref/examples/3d/3d.cfg index c640953fc..890724ca6 100644 --- a/src/test/ref/examples/3d/3d.cfg +++ b/src/test/ref/examples/3d/3d.cfg @@ -2,547 +2,462 @@ [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((i*i)/256) } - .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } - .if(i>351) { .byte round(((512-i)*(512-i))/256) } - } - }} - kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } - .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } - .if(i>351) { .byte round(((i-511)*(i-511))/256) } - } - }} kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - kickasm(location (const signed byte*) PERSP_Z#0) {{ { - .var d = 256.0 - .var z0 = 6.0 - // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) - .for(var z=0;z<$100;z++) { - .if(z>127) { - .byte round(d / (z0 - ((z - 256) / 64.0))); - } else { - .byte round(d / (z0 - (z / 64.0))); - } - } - } - }} - kickasm(location (const signed byte*) SINH#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) - } - } - }} - kickasm(location (const signed byte*) SINQ#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) - } - } - }} - kickasm(location (const byte*) SINH_LO#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (const byte*) SINH_HI#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (const byte*) SINQ_LO#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (const byte*) SINQ_HI#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - [11] call main + [2] call main to:@end @end: scope:[] from @1 - [12] phi() + [3] phi() main: scope:[main] from @1 asm { sei } - [14] call sprites_init + [5] call sprites_init to:main::@1 main::@1: scope:[main] from main - [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 - [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 - [17] call debug_print_init + [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 + [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 + [8] call debug_print_init to:main::@2 main::@2: scope:[main] from main::@1 - [18] phi() - [19] call anim + [9] phi() + [10] call anim to:main::@return main::@return: scope:[main] from main::@2 - [20] return + [11] return to:@return anim: scope:[anim] from main::@2 - [21] phi() + [12] phi() to:anim::@1 anim::@1: scope:[anim] from anim anim::@10 - [22] (signed byte) sy#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sy#3 ) - [22] (signed byte) sx#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sx#3 ) + [13] (signed byte) sy#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sy#3 ) + [13] (signed byte) sx#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sx#3 ) to:anim::@2 anim::@2: scope:[anim] from anim::@1 anim::@2 - [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 + [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 to:anim::@3 anim::@3: scope:[anim] from anim::@2 anim::@3 - [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 + [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 to:anim::@4 anim::@4: scope:[anim] from anim::@3 anim::@4 - [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 + [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 to:anim::@5 anim::@5: scope:[anim] from anim::@4 - [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 - [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 - [29] call calculate_matrix + [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 + [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 + [20] call calculate_matrix to:anim::@8 anim::@8: scope:[anim] from anim::@5 - [30] phi() - [31] call store_matrix + [21] phi() + [22] call store_matrix to:anim::@6 anim::@6: scope:[anim] from anim::@8 anim::@9 - [32] (byte) anim::i#2 ← phi( anim::@8/(byte) 0 anim::@9/(byte) anim::i#1 ) - [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) - [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) - [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) - [37] call rotate_matrix + [23] (byte) anim::i#2 ← phi( anim::@8/(byte) 0 anim::@9/(byte) anim::i#1 ) + [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) + [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) + [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) + [28] call rotate_matrix to:anim::@9 anim::@9: scope:[anim] from anim::@6 - [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) - [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) - [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) - [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) - [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) - [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) - [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 - [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) - [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 - [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) - [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 - [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 - [50] if((byte) anim::i#1!=(byte) 8) goto anim::@6 + [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) + [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) + [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) + [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) + [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) + [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) + [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 + [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) + [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 + [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) + [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 + [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 + [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 to:anim::@7 anim::@7: scope:[anim] from anim::@9 - [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 - [52] call debug_print + [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 + [43] call debug_print to:anim::@10 anim::@10: scope:[anim] from anim::@7 - [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [54] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 - [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 + [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 + [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 to:anim::@1 debug_print: scope:[debug_print] from anim::@7 - [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 + [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 to:debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos1: scope:[debug_print] from debug_print - [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 - [58] call print_sbyte_at + [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + [49] call print_sbyte_at to:debug_print::@2 debug_print::@2: scope:[debug_print] from debug_print::print_sbyte_pos1 - [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 + [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 to:debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos2: scope:[debug_print] from debug_print::@2 - [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 - [61] call print_sbyte_at + [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 + [52] call print_sbyte_at to:debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos3: scope:[debug_print] from debug_print::print_sbyte_pos2 - [62] phi() - [63] call print_sbyte_at + [53] phi() + [54] call print_sbyte_at to:debug_print::@3 debug_print::@3: scope:[debug_print] from debug_print::print_sbyte_pos3 - [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) + [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) to:debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos4: scope:[debug_print] from debug_print::@3 - [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 - [66] call print_sbyte_at + [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 + [57] call print_sbyte_at to:debug_print::@4 debug_print::@4: scope:[debug_print] from debug_print::print_sbyte_pos4 - [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) + [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) to:debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos5: scope:[debug_print] from debug_print::@4 - [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 - [69] call print_sbyte_at + [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + [60] call print_sbyte_at to:debug_print::@5 debug_print::@5: scope:[debug_print] from debug_print::print_sbyte_pos5 - [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) + [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) to:debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos6: scope:[debug_print] from debug_print::@5 - [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 - [72] call print_sbyte_at + [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + [63] call print_sbyte_at to:debug_print::@6 debug_print::@6: scope:[debug_print] from debug_print::print_sbyte_pos6 - [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) + [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) to:debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos7: scope:[debug_print] from debug_print::@6 - [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 - [75] call print_sbyte_at + [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + [66] call print_sbyte_at to:debug_print::@7 debug_print::@7: scope:[debug_print] from debug_print::print_sbyte_pos7 - [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) + [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) to:debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos8: scope:[debug_print] from debug_print::@7 - [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 - [78] call print_sbyte_at + [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + [69] call print_sbyte_at to:debug_print::@8 debug_print::@8: scope:[debug_print] from debug_print::print_sbyte_pos8 - [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) + [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) to:debug_print::print_sbyte_pos9 debug_print::print_sbyte_pos9: scope:[debug_print] from debug_print::@8 - [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 - [81] call print_sbyte_at + [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + [72] call print_sbyte_at to:debug_print::@9 debug_print::@9: scope:[debug_print] from debug_print::print_sbyte_pos9 - [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) + [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) to:debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos10: scope:[debug_print] from debug_print::@9 - [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 - [84] call print_sbyte_at + [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + [75] call print_sbyte_at to:debug_print::@10 debug_print::@10: scope:[debug_print] from debug_print::print_sbyte_pos10 - [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) + [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) to:debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos11: scope:[debug_print] from debug_print::@10 - [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 - [87] call print_sbyte_at + [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + [78] call print_sbyte_at to:debug_print::@11 debug_print::@11: scope:[debug_print] from debug_print::print_sbyte_pos11 - [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) + [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) to:debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos12: scope:[debug_print] from debug_print::@11 - [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 - [90] call print_sbyte_at + [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + [81] call print_sbyte_at to:debug_print::@1 debug_print::@1: scope:[debug_print] from debug_print::@17 debug_print::print_sbyte_pos12 - [91] (byte) debug_print::i#2 ← phi( debug_print::print_sbyte_pos12/(byte) 0 debug_print::@17/(byte) debug_print::i#1 ) - [91] (byte) debug_print::c#2 ← phi( debug_print::print_sbyte_pos12/(byte) 4 debug_print::@17/(byte) debug_print::c#1 ) - [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 - [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) - [94] call print_sbyte_at + [82] (byte) debug_print::i#2 ← phi( debug_print::print_sbyte_pos12/(byte) 0 debug_print::@17/(byte) debug_print::i#1 ) + [82] (byte) debug_print::c#2 ← phi( debug_print::print_sbyte_pos12/(byte) 4 debug_print::@17/(byte) debug_print::c#1 ) + [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 + [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) + [85] call print_sbyte_at to:debug_print::@12 debug_print::@12: scope:[debug_print] from debug_print::@1 - [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 - [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) - [97] call print_sbyte_at + [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 + [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) + [88] call print_sbyte_at to:debug_print::@13 debug_print::@13: scope:[debug_print] from debug_print::@12 - [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 - [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) - [100] call print_sbyte_at + [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 + [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) + [91] call print_sbyte_at to:debug_print::@14 debug_print::@14: scope:[debug_print] from debug_print::@13 - [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 - [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) - [103] call print_sbyte_at + [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 + [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) + [94] call print_sbyte_at to:debug_print::@15 debug_print::@15: scope:[debug_print] from debug_print::@14 - [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 - [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) - [106] call print_sbyte_at + [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 + [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) + [97] call print_sbyte_at to:debug_print::@16 debug_print::@16: scope:[debug_print] from debug_print::@15 - [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 - [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) - [109] call print_sbyte_at + [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 + [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) + [100] call print_sbyte_at to:debug_print::@17 debug_print::@17: scope:[debug_print] from debug_print::@16 - [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 - [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 - [112] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 + [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 + [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 + [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 to:debug_print::@return debug_print::@return: scope:[debug_print] from debug_print::@17 - [113] return + [104] return to:@return print_sbyte_at: scope:[print_sbyte_at] from debug_print::@1 debug_print::@12 debug_print::@13 debug_print::@14 debug_print::@15 debug_print::@16 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@16 debug_print_init::@17 - [114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@12/(byte*) print_sbyte_at::at#16 debug_print::@13/(byte*) print_sbyte_at::at#17 debug_print::@14/(byte*) print_sbyte_at::at#18 debug_print::@15/(byte*) print_sbyte_at::at#19 debug_print::@16/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@16/(byte*) print_sbyte_at::at#1 debug_print_init::@17/(byte*) print_sbyte_at::at#2 ) - [114] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@12/(signed byte) print_sbyte_at::b#17 debug_print::@13/(signed byte) print_sbyte_at::b#18 debug_print::@14/(signed byte) print_sbyte_at::b#19 debug_print::@15/(signed byte) print_sbyte_at::b#20 debug_print::@16/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@16/(signed byte) print_sbyte_at::b#2 debug_print_init::@17/(signed byte) print_sbyte_at::b#3 ) - [115] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 + [105] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@12/(byte*) print_sbyte_at::at#16 debug_print::@13/(byte*) print_sbyte_at::at#17 debug_print::@14/(byte*) print_sbyte_at::at#18 debug_print::@15/(byte*) print_sbyte_at::at#19 debug_print::@16/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@16/(byte*) print_sbyte_at::at#1 debug_print_init::@17/(byte*) print_sbyte_at::at#2 ) + [105] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@12/(signed byte) print_sbyte_at::b#17 debug_print::@13/(signed byte) print_sbyte_at::b#18 debug_print::@14/(signed byte) print_sbyte_at::b#19 debug_print::@15/(signed byte) print_sbyte_at::b#20 debug_print::@16/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@16/(signed byte) print_sbyte_at::b#2 debug_print_init::@17/(signed byte) print_sbyte_at::b#3 ) + [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 to:print_sbyte_at::@3 print_sbyte_at::@3: scope:[print_sbyte_at] from print_sbyte_at - [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 - [117] call print_char_at + [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 + [108] call print_char_at to:print_sbyte_at::@2 print_sbyte_at::@2: scope:[print_sbyte_at] from print_sbyte_at::@3 print_sbyte_at::@4 - [118] (signed byte) print_sbyte_at::b#24 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#22 ) - [119] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 - [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 - [121] call print_byte_at + [109] (signed byte) print_sbyte_at::b#24 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#22 ) + [110] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 + [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 + [112] call print_byte_at to:print_sbyte_at::@return print_sbyte_at::@return: scope:[print_sbyte_at] from print_sbyte_at::@2 - [122] return + [113] return to:@return print_sbyte_at::@1: scope:[print_sbyte_at] from print_sbyte_at - [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 - [124] call print_char_at + [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 + [115] call print_char_at to:print_sbyte_at::@4 print_sbyte_at::@4: scope:[print_sbyte_at] from print_sbyte_at::@1 - [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 + [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 to:print_sbyte_at::@2 print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3 - [126] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) - [126] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) - [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 + [117] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) + [117] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) + [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 to:print_char_at::@return print_char_at::@return: scope:[print_char_at] from print_char_at - [128] return + [119] return to:@return print_byte_at: scope:[print_byte_at] from print_sbyte_at::@2 - [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 - [130] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) - [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - [132] call print_char_at + [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 + [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) + [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + [123] call print_char_at to:print_byte_at::@1 print_byte_at::@1: scope:[print_byte_at] from print_byte_at - [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f - [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 - [135] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) - [136] call print_char_at + [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f + [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 + [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) + [127] call print_char_at to:print_byte_at::@return print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@1 - [137] return + [128] return to:@return rotate_matrix: scope:[rotate_matrix] from anim::@6 - [138] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 - [139] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 - [140] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 + [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 + [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 + [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } to:rotate_matrix::@return rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix - [142] return + [133] return to:@return store_matrix: scope:[store_matrix] from anim::@8 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } to:store_matrix::@return store_matrix::@return: scope:[store_matrix] from store_matrix - [144] return + [135] return to:@return calculate_matrix: scope:[calculate_matrix] from anim::@5 - [145] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - [146] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 - [147] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 - [148] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 - [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 - [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 - [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 - [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 - [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 - [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) - [156] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 - [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) - [158] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 - [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) - [160] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 - [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) - [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) - [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) - [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) - [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) - [166] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 - [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) - [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) - [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) - [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) - [172] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 - [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) - [174] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 - [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) - [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) - [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) - [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) - [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) - [180] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 - [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) - [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) - [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) - [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) - [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) - [186] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 - [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) - [188] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 + [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 + [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 + [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 + [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 + [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 + [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 + [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 + [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 + [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) + [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 + [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) + [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 + [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 + [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) + [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) + [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) + [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) + [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) + [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 + [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) + [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) + [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) + [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) + [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) + [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 + [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) + [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 + [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) + [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) + [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) + [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) + [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 + [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) + [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) + [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) + [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) + [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) + [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 + [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) + [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 to:calculate_matrix::@return calculate_matrix::@return: scope:[calculate_matrix] from calculate_matrix - [189] return + [180] return to:@return debug_print_init: scope:[debug_print_init] from main::@1 - [190] phi() - [191] call print_cls + [181] phi() + [182] call print_cls to:debug_print_init::@4 debug_print_init::@4: scope:[debug_print_init] from debug_print_init - [192] phi() - [193] call print_str_at + [183] phi() + [184] call print_str_at to:debug_print_init::@5 debug_print_init::@5: scope:[debug_print_init] from debug_print_init::@4 - [194] phi() - [195] call print_str_at + [185] phi() + [186] call print_str_at to:debug_print_init::@6 debug_print_init::@6: scope:[debug_print_init] from debug_print_init::@5 - [196] phi() - [197] call print_str_at + [187] phi() + [188] call print_str_at to:debug_print_init::@7 debug_print_init::@7: scope:[debug_print_init] from debug_print_init::@6 - [198] phi() - [199] call print_str_at + [189] phi() + [190] call print_str_at to:debug_print_init::@8 debug_print_init::@8: scope:[debug_print_init] from debug_print_init::@7 - [200] phi() - [201] call print_str_at + [191] phi() + [192] call print_str_at to:debug_print_init::@9 debug_print_init::@9: scope:[debug_print_init] from debug_print_init::@8 - [202] phi() - [203] call print_str_at + [193] phi() + [194] call print_str_at to:debug_print_init::@10 debug_print_init::@10: scope:[debug_print_init] from debug_print_init::@9 - [204] phi() - [205] call print_str_at + [195] phi() + [196] call print_str_at to:debug_print_init::@11 debug_print_init::@11: scope:[debug_print_init] from debug_print_init::@10 - [206] phi() - [207] call print_str_at + [197] phi() + [198] call print_str_at to:debug_print_init::@12 debug_print_init::@12: scope:[debug_print_init] from debug_print_init::@11 - [208] phi() - [209] call print_str_at + [199] phi() + [200] call print_str_at to:debug_print_init::@13 debug_print_init::@13: scope:[debug_print_init] from debug_print_init::@12 - [210] phi() - [211] call print_str_at + [201] phi() + [202] call print_str_at to:debug_print_init::@14 debug_print_init::@14: scope:[debug_print_init] from debug_print_init::@13 - [212] phi() - [213] call print_str_at + [203] phi() + [204] call print_str_at to:debug_print_init::@15 debug_print_init::@15: scope:[debug_print_init] from debug_print_init::@14 - [214] phi() - [215] call print_str_at + [205] phi() + [206] call print_str_at to:debug_print_init::@1 debug_print_init::@1: scope:[debug_print_init] from debug_print_init::@15 debug_print_init::@3 - [216] (byte) debug_print_init::i#2 ← phi( debug_print_init::@15/(byte) 0 debug_print_init::@3/(byte) debug_print_init::i#1 ) - [216] (byte) debug_print_init::c#2 ← phi( debug_print_init::@15/(byte) 4 debug_print_init::@3/(byte) debug_print_init::c#1 ) - [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 - [218] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) - [219] call print_sbyte_at + [207] (byte) debug_print_init::i#2 ← phi( debug_print_init::@15/(byte) 0 debug_print_init::@3/(byte) debug_print_init::i#1 ) + [207] (byte) debug_print_init::c#2 ← phi( debug_print_init::@15/(byte) 4 debug_print_init::@3/(byte) debug_print_init::c#1 ) + [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 + [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) + [210] call print_sbyte_at to:debug_print_init::@16 debug_print_init::@16: scope:[debug_print_init] from debug_print_init::@1 - [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 - [221] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) - [222] call print_sbyte_at + [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 + [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) + [213] call print_sbyte_at to:debug_print_init::@17 debug_print_init::@17: scope:[debug_print_init] from debug_print_init::@16 - [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 - [224] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) - [225] call print_sbyte_at + [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 + [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) + [216] call print_sbyte_at to:debug_print_init::@2 debug_print_init::@2: scope:[debug_print_init] from debug_print_init::@17 debug_print_init::@2 - [226] (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@17/(byte) 0 ) - [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 - [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 - [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 - [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 - [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 - [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 - [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 - [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 - [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 - [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 - [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [246] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 - [247] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 + [217] (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@17/(byte) 0 ) + [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 + [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 + [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 + [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 + [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 + [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 + [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 + [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 + [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 + [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 + [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 + [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 to:debug_print_init::@3 debug_print_init::@3: scope:[debug_print_init] from debug_print_init::@2 - [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 - [249] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 - [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 + [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 + [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 + [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 to:debug_print_init::@return debug_print_init::@return: scope:[debug_print_init] from debug_print_init::@3 - [251] return + [242] return to:@return print_str_at: scope:[print_str_at] from debug_print_init::@10 debug_print_init::@11 debug_print_init::@12 debug_print_init::@13 debug_print_init::@14 debug_print_init::@15 debug_print_init::@4 debug_print_init::@5 debug_print_init::@6 debug_print_init::@7 debug_print_init::@8 debug_print_init::@9 - [252] (byte*) print_str_at::at#15 ← phi( debug_print_init::@9/(const byte*) SCREEN#0+(word)(number) $28*(number) $12 debug_print_init::@10/(const byte*) SCREEN#0+(word)(number) $28*(number) $13 debug_print_init::@11/(const byte*) SCREEN#0+(word)(number) $28*(number) $14 debug_print_init::@12/(const byte*) SCREEN#0+(word)(number) $28*(number) $15 debug_print_init::@13/(const byte*) SCREEN#0+(word)(number) $28*(number) $16 debug_print_init::@14/(const byte*) SCREEN#0+(word)(number) $28*(number) $17 debug_print_init::@15/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 debug_print_init::@4/(const byte*) SCREEN#0+(byte) $22 debug_print_init::@5/(const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 debug_print_init::@6/(const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 debug_print_init::@7/(const byte*) SCREEN#0+(word)(number) $28*(number) $10 debug_print_init::@8/(const byte*) SCREEN#0+(word)(number) $28*(number) $11 ) - [252] (byte*) print_str_at::str#15 ← phi( debug_print_init::@9/(const string) debug_print_init::str5 debug_print_init::@10/(const string) debug_print_init::str6 debug_print_init::@11/(const string) debug_print_init::str7 debug_print_init::@12/(const string) debug_print_init::str8 debug_print_init::@13/(const string) debug_print_init::str9 debug_print_init::@14/(const string) debug_print_init::str10 debug_print_init::@15/(const string) debug_print_init::str11 debug_print_init::@4/(const string) debug_print_init::str debug_print_init::@5/(const string) debug_print_init::str1 debug_print_init::@6/(const string) debug_print_init::str2 debug_print_init::@7/(const string) debug_print_init::str3 debug_print_init::@8/(const string) debug_print_init::str4 ) + [243] (byte*) print_str_at::at#15 ← phi( debug_print_init::@9/(const byte*) SCREEN#0+(word)(number) $28*(number) $12 debug_print_init::@10/(const byte*) SCREEN#0+(word)(number) $28*(number) $13 debug_print_init::@11/(const byte*) SCREEN#0+(word)(number) $28*(number) $14 debug_print_init::@12/(const byte*) SCREEN#0+(word)(number) $28*(number) $15 debug_print_init::@13/(const byte*) SCREEN#0+(word)(number) $28*(number) $16 debug_print_init::@14/(const byte*) SCREEN#0+(word)(number) $28*(number) $17 debug_print_init::@15/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 debug_print_init::@4/(const byte*) SCREEN#0+(byte) $22 debug_print_init::@5/(const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 debug_print_init::@6/(const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 debug_print_init::@7/(const byte*) SCREEN#0+(word)(number) $28*(number) $10 debug_print_init::@8/(const byte*) SCREEN#0+(word)(number) $28*(number) $11 ) + [243] (byte*) print_str_at::str#15 ← phi( debug_print_init::@9/(const string) debug_print_init::str5 debug_print_init::@10/(const string) debug_print_init::str6 debug_print_init::@11/(const string) debug_print_init::str7 debug_print_init::@12/(const string) debug_print_init::str8 debug_print_init::@13/(const string) debug_print_init::str9 debug_print_init::@14/(const string) debug_print_init::str10 debug_print_init::@15/(const string) debug_print_init::str11 debug_print_init::@4/(const string) debug_print_init::str debug_print_init::@5/(const string) debug_print_init::str1 debug_print_init::@6/(const string) debug_print_init::str2 debug_print_init::@7/(const string) debug_print_init::str3 debug_print_init::@8/(const string) debug_print_init::str4 ) to:print_str_at::@1 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 - [253] (byte*) print_str_at::at#13 ← phi( print_str_at/(byte*) print_str_at::at#15 print_str_at::@2/(byte*) print_str_at::at#0 ) - [253] (byte*) print_str_at::str#13 ← phi( print_str_at/(byte*) print_str_at::str#15 print_str_at::@2/(byte*) print_str_at::str#0 ) - [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 + [244] (byte*) print_str_at::at#13 ← phi( print_str_at/(byte*) print_str_at::at#15 print_str_at::@2/(byte*) print_str_at::at#0 ) + [244] (byte*) print_str_at::str#13 ← phi( print_str_at/(byte*) print_str_at::str#15 print_str_at::@2/(byte*) print_str_at::str#0 ) + [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 to:print_str_at::@return print_str_at::@return: scope:[print_str_at] from print_str_at::@1 - [255] return + [246] return to:@return print_str_at::@2: scope:[print_str_at] from print_str_at::@1 - [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) - [257] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 - [258] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 + [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) + [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 + [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 to:print_str_at::@1 print_cls: scope:[print_cls] from debug_print_init - [259] phi() + [250] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [260] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [261] *((byte*) print_cls::sc#2) ← (byte) ' ' - [262] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 + [251] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [252] *((byte*) print_cls::sc#2) ← (byte) ' ' + [253] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [264] return + [255] return to:@return sprites_init: scope:[sprites_init] from main - [265] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff + [256] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [266] (byte) sprites_init::i#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::i#1 ) - [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 - [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 - [269] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 - [270] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 + [257] (byte) sprites_init::i#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::i#1 ) + [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 + [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 + [260] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 + [261] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [271] return + [262] return to:@return diff --git a/src/test/ref/examples/3d/3d.log b/src/test/ref/examples/3d/3d.log index 75ae34323..5b4bf73c8 100644 --- a/src/test/ref/examples/3d/3d.log +++ b/src/test/ref/examples/3d/3d.log @@ -1,5 +1,5 @@ -Resolved forward reference mulf_sqr1 to (byte*) mulf_sqr1 -Resolved forward reference mulf_sqr2 to (byte*) mulf_sqr2 +Resolved forward reference mulf_sqr1 to (byte[$200]) mulf_sqr1 +Resolved forward reference mulf_sqr2 to (byte[$200]) mulf_sqr2 Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix @@ -12,32 +12,32 @@ Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix Resolved forward reference SPRITE to (byte*) SPRITE Resolved forward reference COSH to (signed byte*) COSH Resolved forward reference COSH to (signed byte*) COSH -Resolved forward reference SINH to (signed byte*) SINH -Resolved forward reference SINH to (signed byte*) SINH -Resolved forward reference SINH to (signed byte*) SINH -Resolved forward reference SINH to (signed byte*) SINH -Resolved forward reference SINH to (signed byte*) SINH -Resolved forward reference SINH to (signed byte*) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH Resolved forward reference COSQ to (signed byte*) COSQ Resolved forward reference COSQ to (signed byte*) COSQ Resolved forward reference COSQ to (signed byte*) COSQ Resolved forward reference COSQ to (signed byte*) COSQ Resolved forward reference COSH to (signed byte*) COSH Resolved forward reference COSH to (signed byte*) COSH -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINH to (signed byte*) SINH -Resolved forward reference SINH to (signed byte*) SINH +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINH to (signed byte[$140]) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH Resolved forward reference COSH to (signed byte*) COSH Resolved forward reference COSH to (signed byte*) COSH -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINQ to (signed byte*) SINQ -Resolved forward reference SINH to (signed byte*) SINH -Resolved forward reference SINH to (signed byte*) SINH +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINQ to (signed byte[$140]) SINQ +Resolved forward reference SINH to (signed byte[$140]) SINH +Resolved forward reference SINH to (signed byte[$140]) SINH Resolved forward reference COSQ to (signed byte*) COSQ Resolved forward reference COSQ to (signed byte*) COSQ Resolved forward reference COSQ to (signed byte*) COSQ @@ -48,16 +48,16 @@ Resolved forward reference COSH_HI to (byte*) COSH_HI Resolved forward reference COSH_LO to (byte*) COSH_LO Resolved forward reference COSH_HI to (byte*) COSH_HI Resolved forward reference COSH_LO to (byte*) COSH_LO -Resolved forward reference SINH_HI to (byte*) SINH_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINH_HI to (byte*) SINH_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINH_HI to (byte*) SINH_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINH_HI to (byte*) SINH_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINH_HI to (byte*) SINH_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO +Resolved forward reference SINH_HI to (byte[$140]) SINH_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINH_HI to (byte[$140]) SINH_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINH_HI to (byte[$140]) SINH_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINH_HI to (byte[$140]) SINH_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINH_HI to (byte[$140]) SINH_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO Resolved forward reference COSQ_HI to (byte*) COSQ_HI Resolved forward reference COSH_LO to (byte*) COSH_LO Resolved forward reference COSQ_HI to (byte*) COSQ_HI @@ -70,25 +70,25 @@ Resolved forward reference COSH_HI to (byte*) COSH_HI Resolved forward reference COSH_LO to (byte*) COSH_LO Resolved forward reference COSH_HI to (byte*) COSH_HI Resolved forward reference COSH_LO to (byte*) COSH_LO -Resolved forward reference SINQ_HI to (byte*) SINQ_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINQ_HI to (byte*) SINQ_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINQ_HI to (byte*) SINQ_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINQ_HI to (byte*) SINQ_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINH_HI to (byte*) SINH_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO -Resolved forward reference SINH_HI to (byte*) SINH_HI -Resolved forward reference SINH_LO to (byte*) SINH_LO +Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINH_HI to (byte[$140]) SINH_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO +Resolved forward reference SINH_HI to (byte[$140]) SINH_HI +Resolved forward reference SINH_LO to (byte[$140]) SINH_LO Resolved forward reference COSH_HI to (byte*) COSH_HI Resolved forward reference COSH_LO to (byte*) COSH_LO Resolved forward reference COSH_HI to (byte*) COSH_HI Resolved forward reference COSH_LO to (byte*) COSH_LO -Resolved forward reference mulf_sqr1 to (byte*) mulf_sqr1 -Resolved forward reference mulf_sqr2 to (byte*) mulf_sqr2 -Resolved forward reference PERSP_Z to (signed byte*) PERSP_Z +Resolved forward reference mulf_sqr1 to (byte[$200]) mulf_sqr1 +Resolved forward reference mulf_sqr2 to (byte[$200]) mulf_sqr2 +Resolved forward reference PERSP_Z to (signed byte[$100]) PERSP_Z Adding pointer type conversion cast (byte*) PROCPORT_DDR in (byte*) PROCPORT_DDR ← (number) 0 Adding pointer type conversion cast (byte*) PROCPORT in (byte*) PROCPORT ← (number) 1 Adding pointer type conversion cast (byte*) CHARGEN in (byte*) CHARGEN ← (number) $d000 @@ -145,16 +145,7 @@ Adding pointer type conversion cast (word*) psp2 in (word*) psp2 ← (number) $f Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number) $400 Adding pointer type conversion cast (byte*) debug_print_init::COLS in (byte*) debug_print_init::COLS ← (number) $d800 Adding pointer type conversion cast (byte*) sprites_init::SCREEN in (byte*) sprites_init::SCREEN ← (number) $400 -Adding pointer type conversion cast (byte*) mulf_sqr1 in (byte*) mulf_sqr1 ← (number) $2400 -Adding pointer type conversion cast (byte*) mulf_sqr2 in (byte*) mulf_sqr2 ← (number) $2600 Adding pointer type conversion cast (byte*) SPRITE in (byte*) SPRITE ← (number) $3000 -Adding pointer type conversion cast (signed byte*) PERSP_Z in (signed byte*) PERSP_Z ← (number) $2800 -Adding pointer type conversion cast (signed byte*) SINH in (signed byte*) SINH ← (number) $2000 -Adding pointer type conversion cast (signed byte*) SINQ in (signed byte*) SINQ ← (number) $2200 -Adding pointer type conversion cast (byte*) SINH_LO in (byte*) SINH_LO ← (number) $4000 -Adding pointer type conversion cast (byte*) SINH_HI in (byte*) SINH_HI ← (number) $4200 -Adding pointer type conversion cast (byte*) SINQ_LO in (byte*) SINQ_LO ← (number) $4400 -Adding pointer type conversion cast (byte*) SINQ_HI in (byte*) SINQ_HI ← (number) $4600 Identified constant variable (signed byte*) xr Identified constant variable (signed byte*) yr Identified constant variable (signed byte*) zr @@ -167,16 +158,7 @@ Identified constant variable (byte*) SCREEN Identified constant variable (signed byte) sz Identified constant variable (byte*) debug_print_init::COLS Identified constant variable (byte*) sprites_init::SCREEN -Identified constant variable (byte*) mulf_sqr1 -Identified constant variable (byte*) mulf_sqr2 Identified constant variable (byte*) SPRITE -Identified constant variable (signed byte*) PERSP_Z -Identified constant variable (signed byte*) SINH -Identified constant variable (signed byte*) SINQ -Identified constant variable (byte*) SINH_LO -Identified constant variable (byte*) SINH_HI -Identified constant variable (byte*) SINQ_LO -Identified constant variable (byte*) SINQ_HI Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call print_sbyte_pos (signed byte) sx (number) 0 (number) $25 Inlined call call print_sbyte_pos (signed byte) sy (number) 1 (number) $25 @@ -414,9 +396,9 @@ main::@1: scope:[main] from main (byte*) print_screen#28 ← phi( main/(byte*) print_screen#41 ) (signed byte) sy#19 ← phi( main/(signed byte) sy#25 ) (signed byte) sx#18 ← phi( main/(signed byte) sx#23 ) - (word~) main::$1 ← ((word)) (byte*) mulf_sqr1#0 + (word~) main::$1 ← ((word)) (byte[$200]) mulf_sqr1#0 *((word*) psp1#0) ← (word~) main::$1 - (word~) main::$2 ← ((word)) (byte*) mulf_sqr2#0 + (word~) main::$2 ← ((word)) (byte[$200]) mulf_sqr2#0 *((word*) psp2#0) ← (word~) main::$2 call debug_print_init to:main::@2 @@ -1168,31 +1150,31 @@ calculate_matrix: scope:[calculate_matrix] from anim::@18 (signed byte) calculate_matrix::t10#0 ← (signed byte~) calculate_matrix::$9 (signed byte~) calculate_matrix::$10 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t1#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t2#0) *((signed byte[9]) rotation_matrix#0 + (number) 0) ← (signed byte~) calculate_matrix::$10 - (signed byte~) calculate_matrix::$11 ← *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) + (signed byte~) calculate_matrix::$11 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) *((signed byte[9]) rotation_matrix#0 + (number) 1) ← (signed byte~) calculate_matrix::$11 - (signed byte~) calculate_matrix::$12 ← *((signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#1) + *((signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#1) + (signed byte~) calculate_matrix::$12 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#1) + *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#1) *((signed byte[9]) rotation_matrix#0 + (number) 2) ← (signed byte~) calculate_matrix::$12 - (signed byte~) calculate_matrix::$13 ← *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) + (signed byte~) calculate_matrix::$13 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t6#0) (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t5#0) (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t8#0) (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t7#0) *((signed byte[9]) rotation_matrix#0 + (number) 3) ← (signed byte~) calculate_matrix::$17 (signed byte~) calculate_matrix::$18 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t3#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t4#0) - (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) - (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) - (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) - (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) + (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) + (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) + (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) + (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) *((signed byte[9]) rotation_matrix#0 + (number) 4) ← (signed byte~) calculate_matrix::$22 - (signed byte~) calculate_matrix::$23 ← *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) + (signed byte~) calculate_matrix::$23 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) *((signed byte[9]) rotation_matrix#0 + (number) 5) ← (signed byte~) calculate_matrix::$23 (signed byte~) calculate_matrix::$24 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t4#0) - *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t3#0) - (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) - (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) - (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) - (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) + (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) + (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) + (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) + (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) *((signed byte[9]) rotation_matrix#0 + (number) 6) ← (signed byte~) calculate_matrix::$28 - (signed byte~) calculate_matrix::$29 ← *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) + (signed byte~) calculate_matrix::$29 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t6#0) (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t5#0) (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t7#0) @@ -1226,15 +1208,13 @@ rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix (byte*) print_screen#43 ← phi( @28/(byte*) print_screen#46 ) (signed byte) sy#18 ← phi( @28/(signed byte) sy#24 ) (signed byte) sx#17 ← phi( @28/(signed byte) sx#22 ) - (byte*) mulf_sqr1#0 ← ((byte*)) (number) $2400 - (byte*) mulf_sqr2#0 ← ((byte*)) (number) $2600 - kickasm(location (byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { + (byte[$200]) mulf_sqr1#0 ← kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} - kickasm(location (byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { + (byte[$200]) mulf_sqr2#0 ← kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } @@ -1246,8 +1226,7 @@ rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - (signed byte*) PERSP_Z#0 ← ((signed byte*)) (number) $2800 - kickasm(location (signed byte*) PERSP_Z#0) {{ { + (signed byte[$100]) PERSP_Z#0 ← kickasm {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) @@ -1260,76 +1239,30 @@ rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix } } }} - (signed byte*) SINH#0 ← ((signed byte*)) (number) $2000 - (signed byte*~) $0 ← (signed byte*) SINH#0 + (number) $40 + (signed byte[$140]) SINH#0 ← kickasm {{ { + .var min = -$2000 + .var max = $2000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} + (signed byte*~) $0 ← (signed byte[$140]) SINH#0 + (number) $40 (signed byte*) COSH#0 ← (signed byte*~) $0 - (signed byte*) SINQ#0 ← ((signed byte*)) (number) $2200 - (signed byte*~) $1 ← (signed byte*) SINQ#0 + (number) $40 + (signed byte[$140]) SINQ#0 ← kickasm {{ { + .var min = -$1000 + .var max = $1000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} + (signed byte*~) $1 ← (signed byte[$140]) SINQ#0 + (number) $40 (signed byte*) COSQ#0 ← (signed byte*~) $1 - kickasm(location (signed byte*) SINH#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) - } - } - }} - kickasm(location (signed byte*) SINQ#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) - } - } - }} - (byte*) SINH_LO#0 ← ((byte*)) (number) $4000 - (byte*) SINH_HI#0 ← ((byte*)) (number) $4200 - (byte*) SINQ_LO#0 ← ((byte*)) (number) $4400 - (byte*) SINQ_HI#0 ← ((byte*)) (number) $4600 - kickasm(location (byte*) SINH_LO#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (byte*) SINH_HI#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (byte*) SINQ_LO#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (byte*) SINQ_HI#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} call main to:@34 @34: scope:[] from @33 @@ -1397,24 +1330,16 @@ SYMBOL TABLE SSA (byte) LIGHT_BLUE#0 (byte) LIGHT_GREY (byte) LIGHT_GREY#0 -(signed byte*) PERSP_Z -(signed byte*) PERSP_Z#0 +(signed byte[$100]) PERSP_Z +(signed byte[$100]) PERSP_Z#0 (byte*) RASTER (byte*) RASTER#0 (byte*) SCREEN (byte*) SCREEN#0 -(signed byte*) SINH -(signed byte*) SINH#0 -(byte*) SINH_HI -(byte*) SINH_HI#0 -(byte*) SINH_LO -(byte*) SINH_LO#0 -(signed byte*) SINQ -(signed byte*) SINQ#0 -(byte*) SINQ_HI -(byte*) SINQ_HI#0 -(byte*) SINQ_LO -(byte*) SINQ_LO#0 +(signed byte[$140]) SINH +(signed byte[$140]) SINH#0 +(signed byte[$140]) SINQ +(signed byte[$140]) SINQ#0 (byte*) SPRITE (byte*) SPRITE#0 (byte*) SPRITES_COLS @@ -1923,10 +1848,10 @@ SYMBOL TABLE SSA (label) main::@2 (label) main::@3 (label) main::@return -(byte*) mulf_sqr1 -(byte*) mulf_sqr1#0 -(byte*) mulf_sqr2 -(byte*) mulf_sqr2#0 +(byte[$200]) mulf_sqr1 +(byte[$200]) mulf_sqr1#0 +(byte[$200]) mulf_sqr2 +(byte[$200]) mulf_sqr2#0 (signed byte*) pp (signed byte*) pp#0 (signed byte[8]) pps @@ -2399,8 +2324,8 @@ Adding number conversion cast (unumber) 5 in *((signed byte[9]) rotation_matrix# Adding number conversion cast (unumber) 6 in *((signed byte[9]) rotation_matrix#0 + (number) 6) ← (signed byte~) calculate_matrix::$28 Adding number conversion cast (unumber) 7 in *((signed byte[9]) rotation_matrix#0 + (number) 7) ← (signed byte~) calculate_matrix::$33 Adding number conversion cast (unumber) 8 in *((signed byte[9]) rotation_matrix#0 + (number) 8) ← (signed byte~) calculate_matrix::$34 -Adding number conversion cast (unumber) $40 in (signed byte*~) $0 ← (signed byte*) SINH#0 + (number) $40 -Adding number conversion cast (unumber) $40 in (signed byte*~) $1 ← (signed byte*) SINQ#0 + (number) $40 +Adding number conversion cast (unumber) $40 in (signed byte*~) $0 ← (signed byte[$140]) SINH#0 + (number) $40 +Adding number conversion cast (unumber) $40 in (signed byte*~) $1 ← (signed byte[$140]) SINQ#0 + (number) $40 Successful SSA optimization PassNAddNumberTypeConversions Adding number conversion cast (signed byte) to elements in (signed byte[8]) xs#0 ← { (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 } Adding number conversion cast (signed byte) to elements in (signed byte[8]) ys#0 ← { (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34 } @@ -2426,8 +2351,8 @@ Inlining cast (signed byte*) yp#0 ← (signed byte*)(number) $f5 Inlining cast (word*) psp1#0 ← (word*)(number) $f6 Inlining cast (word*) psp2#0 ← (word*)(number) $f8 Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400 -Inlining cast (word~) main::$1 ← (word)(byte*) mulf_sqr1#0 -Inlining cast (word~) main::$2 ← (word)(byte*) mulf_sqr2#0 +Inlining cast (word~) main::$1 ← (word)(byte[$200]) mulf_sqr1#0 +Inlining cast (word~) main::$2 ← (word)(byte[$200]) mulf_sqr2#0 Inlining cast (signed byte) sx#2 ← (snumber)(number) 0 Inlining cast (signed byte) sy#2 ← (snumber)(number) 0 Inlining cast (signed byte) sz#0 ← (snumber)(number) 0 @@ -2463,16 +2388,7 @@ Inlining cast (byte) debug_print::c#0 ← (unumber)(number) 4 Inlining cast (byte*) sprites_init::SCREEN#0 ← (byte*)(number) $400 Inlining cast *((byte*) SPRITES_ENABLE#0) ← (unumber)(number) $ff Inlining cast (byte~) sprites_init::$2 ← (byte)(byte*~) sprites_init::$1 -Inlining cast (byte*) mulf_sqr1#0 ← (byte*)(number) $2400 -Inlining cast (byte*) mulf_sqr2#0 ← (byte*)(number) $2600 Inlining cast (byte*) SPRITE#0 ← (byte*)(number) $3000 -Inlining cast (signed byte*) PERSP_Z#0 ← (signed byte*)(number) $2800 -Inlining cast (signed byte*) SINH#0 ← (signed byte*)(number) $2000 -Inlining cast (signed byte*) SINQ#0 ← (signed byte*)(number) $2200 -Inlining cast (byte*) SINH_LO#0 ← (byte*)(number) $4000 -Inlining cast (byte*) SINH_HI#0 ← (byte*)(number) $4200 -Inlining cast (byte*) SINQ_LO#0 ← (byte*)(number) $4400 -Inlining cast (byte*) SINQ_HI#0 ← (byte*)(number) $4600 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 @@ -2601,18 +2517,9 @@ Simplifying constant integer cast 5 Simplifying constant integer cast 6 Simplifying constant integer cast 7 Simplifying constant integer cast 8 -Simplifying constant pointer cast (byte*) 9216 -Simplifying constant pointer cast (byte*) 9728 Simplifying constant pointer cast (byte*) 12288 -Simplifying constant pointer cast (signed byte*) 10240 -Simplifying constant pointer cast (signed byte*) 8192 Simplifying constant integer cast $40 -Simplifying constant pointer cast (signed byte*) 8704 Simplifying constant integer cast $40 -Simplifying constant pointer cast (byte*) 16384 -Simplifying constant pointer cast (byte*) 16896 -Simplifying constant pointer cast (byte*) 17408 -Simplifying constant pointer cast (byte*) 17920 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 5 Finalized unsigned number type (byte) $e @@ -3045,16 +2952,52 @@ Constant (const byte) debug_print::i#0 = 0 Constant (const byte*) sprites_init::SCREEN#0 = (byte*) 1024 Constant (const byte) sprites_init::i#0 = 0 Constant (const signed byte[9]) rotation_matrix#0 = { fill( 9, 0) } -Constant (const byte*) mulf_sqr1#0 = (byte*) 9216 -Constant (const byte*) mulf_sqr2#0 = (byte*) 9728 +Constant (const byte[$200]) mulf_sqr1#0 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((i*i)/256) } + .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } + .if(i>351) { .byte round(((512-i)*(512-i))/256) } + } + }} +Constant (const byte[$200]) mulf_sqr2#0 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } + .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } + .if(i>351) { .byte round(((i-511)*(i-511))/256) } + } + }} Constant (const byte*) SPRITE#0 = (byte*) 12288 -Constant (const signed byte*) PERSP_Z#0 = (signed byte*) 10240 -Constant (const signed byte*) SINH#0 = (signed byte*) 8192 -Constant (const signed byte*) SINQ#0 = (signed byte*) 8704 -Constant (const byte*) SINH_LO#0 = (byte*) 16384 -Constant (const byte*) SINH_HI#0 = (byte*) 16896 -Constant (const byte*) SINQ_LO#0 = (byte*) 17408 -Constant (const byte*) SINQ_HI#0 = (byte*) 17920 +Constant (const signed byte[$100]) PERSP_Z#0 = kickasm {{ { + .var d = 256.0 + .var z0 = 6.0 + // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) + .for(var z=0;z<$100;z++) { + .if(z>127) { + .byte round(d / (z0 - ((z - 256) / 64.0))); + } else { + .byte round(d / (z0 - (z / 64.0))); + } + } + } + }} +Constant (const signed byte[$140]) SINH#0 = kickasm {{ { + .var min = -$2000 + .var max = $2000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} +Constant (const signed byte[$140]) SINQ#0 = kickasm {{ { + .var min = -$1000 + .var max = $1000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_screen#0 Constant (const signed byte) calculate_matrix::sz#0 = sz#0 @@ -3062,8 +3005,8 @@ Constant (const signed byte) debug_print::print_sbyte_pos3_sb#0 = sz#0 Successful SSA optimization Pass2ConstantIdentification Constant (const signed byte) print_sbyte_at::b#6 = debug_print::print_sbyte_pos3_sb#0 Successful SSA optimization Pass2ConstantIdentification -Constant value identified (word)mulf_sqr1#0 in [81] (word~) main::$1 ← (word)(const byte*) mulf_sqr1#0 -Constant value identified (word)mulf_sqr2#0 in [83] (word~) main::$2 ← (word)(const byte*) mulf_sqr2#0 +Constant value identified (word)mulf_sqr1#0 in [81] (word~) main::$1 ← (word)(const byte[$200]) mulf_sqr1#0 +Constant value identified (word)mulf_sqr2#0 in [83] (word~) main::$2 ← (word)(const byte[$200]) mulf_sqr2#0 Successful SSA optimization Pass2ConstantValues if() condition always true - replacing block destination [110] if(true) goto anim::@4 Successful SSA optimization Pass2ConstantIfs @@ -3179,8 +3122,8 @@ Constant right-side identified [224] (byte~) debug_print::print_sbyte_pos12_$0#0 Constant right-side identified [229] (byte*) debug_print::at_line#0 ← (const byte*) SCREEN#0 + (word)(number) $13*(number) $28 Constant right-side identified [260] (byte*) sprites_init::sprites_ptr#0 ← (const byte*) sprites_init::SCREEN#0 + (word) $3f8 Constant right-side identified [262] (byte*~) sprites_init::$1 ← (const byte*) SPRITE#0 / (byte) $40 -Constant right-side identified [325] (signed byte*) COSH#0 ← (const signed byte*) SINH#0 + (byte) $40 -Constant right-side identified [326] (signed byte*) COSQ#0 ← (const signed byte*) SINQ#0 + (byte) $40 +Constant right-side identified [322] (signed byte*) COSH#0 ← (const signed byte[$140]) SINH#0 + (byte) $40 +Constant right-side identified [323] (signed byte*) COSQ#0 ← (const signed byte[$140]) SINQ#0 + (byte) $40 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_screen#0+$3e8 Constant (const word) main::$1 = (word)mulf_sqr1#0 @@ -3422,9 +3365,9 @@ Constant inlined print_sbyte_at::at#3 = (const byte*) print_screen#0+(const byte Constant inlined print_sbyte_at::at#9 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 Constant inlined print_sbyte_at::at#8 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 Constant inlined print_sbyte_at::at#7 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 -Constant inlined main::$1 = (word)(const byte*) mulf_sqr1#0 +Constant inlined main::$1 = (word)(const byte[$200]) mulf_sqr1#0 Constant inlined debug_print_init::$49 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 -Constant inlined main::$2 = (word)(const byte*) mulf_sqr2#0 +Constant inlined main::$2 = (word)(const byte[$200]) mulf_sqr2#0 Constant inlined debug_print_init::$46 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 Constant inlined debug_print_init::i#0 = (byte) 0 Constant inlined debug_print_init::$43 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 @@ -3536,66 +3479,66 @@ Adding NOP phi() at start of debug_print_init::@17 Adding NOP phi() at start of debug_print_init::@20 Adding NOP phi() at start of print_cls CALL GRAPH -Calls in [] to main:16 -Calls in [main] to sprites_init:20 debug_print_init:23 anim:25 -Calls in [anim] to calculate_matrix:36 store_matrix:38 rotate_matrix:45 debug_print:60 -Calls in [debug_print] to print_sbyte_at:70 print_sbyte_at:75 print_sbyte_at:79 print_sbyte_at:84 print_sbyte_at:89 print_sbyte_at:94 print_sbyte_at:99 print_sbyte_at:104 print_sbyte_at:109 print_sbyte_at:114 print_sbyte_at:119 print_sbyte_at:124 print_sbyte_at:132 print_sbyte_at:137 print_sbyte_at:142 print_sbyte_at:147 print_sbyte_at:152 print_sbyte_at:157 -Calls in [print_sbyte_at] to print_char_at:168 print_byte_at:173 print_char_at:178 -Calls in [print_byte_at] to print_char_at:189 print_char_at:195 -Calls in [debug_print_init] to print_cls:251 print_str_at:253 print_str_at:255 print_str_at:257 print_str_at:259 print_str_at:261 print_str_at:263 print_str_at:265 print_str_at:267 print_str_at:269 print_str_at:271 print_str_at:273 print_str_at:275 print_sbyte_at:282 print_sbyte_at:287 print_sbyte_at:292 +Calls in [] to main:7 +Calls in [main] to sprites_init:11 debug_print_init:14 anim:16 +Calls in [anim] to calculate_matrix:27 store_matrix:29 rotate_matrix:36 debug_print:51 +Calls in [debug_print] to print_sbyte_at:61 print_sbyte_at:66 print_sbyte_at:70 print_sbyte_at:75 print_sbyte_at:80 print_sbyte_at:85 print_sbyte_at:90 print_sbyte_at:95 print_sbyte_at:100 print_sbyte_at:105 print_sbyte_at:110 print_sbyte_at:115 print_sbyte_at:123 print_sbyte_at:128 print_sbyte_at:133 print_sbyte_at:138 print_sbyte_at:143 print_sbyte_at:148 +Calls in [print_sbyte_at] to print_char_at:159 print_byte_at:164 print_char_at:169 +Calls in [print_byte_at] to print_char_at:180 print_char_at:186 +Calls in [debug_print_init] to print_cls:242 print_str_at:244 print_str_at:246 print_str_at:248 print_str_at:250 print_str_at:252 print_str_at:254 print_str_at:256 print_str_at:258 print_str_at:260 print_str_at:262 print_str_at:264 print_str_at:266 print_sbyte_at:273 print_sbyte_at:278 print_sbyte_at:283 Created 19 initial phi equivalence classes -Coalesced [64] sx#28 ← sx#3 -Coalesced [65] sy#31 ← sy#3 -Coalesced [66] anim::i#4 ← anim::i#1 -Coalesced [69] print_sbyte_at::b#34 ← print_sbyte_at::b#4 -Coalesced [74] print_sbyte_at::b#38 ← print_sbyte_at::b#5 -Coalesced [83] print_sbyte_at::b#39 ← print_sbyte_at::b#7 -Coalesced [88] print_sbyte_at::b#40 ← print_sbyte_at::b#8 -Coalesced [93] print_sbyte_at::b#41 ← print_sbyte_at::b#9 -Coalesced [98] print_sbyte_at::b#42 ← print_sbyte_at::b#10 -Coalesced [103] print_sbyte_at::b#43 ← print_sbyte_at::b#11 -Coalesced [108] print_sbyte_at::b#44 ← print_sbyte_at::b#12 -Coalesced [113] print_sbyte_at::b#35 ← print_sbyte_at::b#13 -Coalesced [118] print_sbyte_at::b#36 ← print_sbyte_at::b#14 -Coalesced [123] print_sbyte_at::b#37 ← print_sbyte_at::b#15 -Coalesced [130] print_sbyte_at::b#28 ← print_sbyte_at::b#16 -Coalesced [131] print_sbyte_at::at#27 ← print_sbyte_at::at#15 -Coalesced [135] print_sbyte_at::b#29 ← print_sbyte_at::b#17 -Coalesced [136] print_sbyte_at::at#28 ← print_sbyte_at::at#16 -Coalesced [140] print_sbyte_at::b#30 ← print_sbyte_at::b#18 -Coalesced [141] print_sbyte_at::at#29 ← print_sbyte_at::at#17 -Coalesced [145] print_sbyte_at::b#31 ← print_sbyte_at::b#19 -Coalesced [146] print_sbyte_at::at#30 ← print_sbyte_at::at#18 -Coalesced [150] print_sbyte_at::b#32 ← print_sbyte_at::b#20 -Coalesced [151] print_sbyte_at::at#31 ← print_sbyte_at::at#19 -Coalesced [155] print_sbyte_at::b#33 ← print_sbyte_at::b#21 -Coalesced [156] print_sbyte_at::at#32 ← print_sbyte_at::at#20 -Coalesced [162] debug_print::c#9 ← debug_print::c#1 -Coalesced [163] debug_print::i#9 ← debug_print::i#1 -Coalesced [167] print_char_at::at#8 ← print_char_at::at#1 -Coalesced [169] print_sbyte_at::b#49 ← print_sbyte_at::b#22 -Coalesced [177] print_char_at::at#7 ← print_char_at::at#0 -Coalesced [180] print_sbyte_at::b#48 ← print_sbyte_at::b#0 -Coalesced [187] print_char_at::ch#5 ← print_char_at::ch#2 -Coalesced [188] print_char_at::at#5 ← print_char_at::at#2 -Coalesced [193] print_char_at::ch#6 ← print_char_at::ch#3 -Coalesced [194] print_char_at::at#6 ← print_char_at::at#3 -Coalesced [280] print_sbyte_at::b#45 ← print_sbyte_at::b#1 -Coalesced [281] print_sbyte_at::at#33 ← print_sbyte_at::at#0 -Coalesced [285] print_sbyte_at::b#46 ← print_sbyte_at::b#2 -Coalesced [286] print_sbyte_at::at#34 ← print_sbyte_at::at#1 -Coalesced [290] print_sbyte_at::b#47 ← print_sbyte_at::b#3 -Coalesced [291] print_sbyte_at::at#35 ← print_sbyte_at::at#2 -Coalesced [320] debug_print_init::c#8 ← debug_print_init::c#1 -Coalesced [321] debug_print_init::i#8 ← debug_print_init::i#1 -Coalesced [322] debug_print_init::j#3 ← debug_print_init::j#1 -Coalesced [324] print_str_at::str#16 ← print_str_at::str#15 -Coalesced [325] print_str_at::at#16 ← print_str_at::at#15 -Coalesced [332] print_str_at::str#17 ← print_str_at::str#0 -Coalesced [333] print_str_at::at#17 ← print_str_at::at#0 -Coalesced [340] print_cls::sc#3 ← print_cls::sc#1 -Coalesced [348] sprites_init::i#3 ← sprites_init::i#1 +Coalesced [55] sx#28 ← sx#3 +Coalesced [56] sy#31 ← sy#3 +Coalesced [57] anim::i#4 ← anim::i#1 +Coalesced [60] print_sbyte_at::b#34 ← print_sbyte_at::b#4 +Coalesced [65] print_sbyte_at::b#38 ← print_sbyte_at::b#5 +Coalesced [74] print_sbyte_at::b#39 ← print_sbyte_at::b#7 +Coalesced [79] print_sbyte_at::b#40 ← print_sbyte_at::b#8 +Coalesced [84] print_sbyte_at::b#41 ← print_sbyte_at::b#9 +Coalesced [89] print_sbyte_at::b#42 ← print_sbyte_at::b#10 +Coalesced [94] print_sbyte_at::b#43 ← print_sbyte_at::b#11 +Coalesced [99] print_sbyte_at::b#44 ← print_sbyte_at::b#12 +Coalesced [104] print_sbyte_at::b#35 ← print_sbyte_at::b#13 +Coalesced [109] print_sbyte_at::b#36 ← print_sbyte_at::b#14 +Coalesced [114] print_sbyte_at::b#37 ← print_sbyte_at::b#15 +Coalesced [121] print_sbyte_at::b#28 ← print_sbyte_at::b#16 +Coalesced [122] print_sbyte_at::at#27 ← print_sbyte_at::at#15 +Coalesced [126] print_sbyte_at::b#29 ← print_sbyte_at::b#17 +Coalesced [127] print_sbyte_at::at#28 ← print_sbyte_at::at#16 +Coalesced [131] print_sbyte_at::b#30 ← print_sbyte_at::b#18 +Coalesced [132] print_sbyte_at::at#29 ← print_sbyte_at::at#17 +Coalesced [136] print_sbyte_at::b#31 ← print_sbyte_at::b#19 +Coalesced [137] print_sbyte_at::at#30 ← print_sbyte_at::at#18 +Coalesced [141] print_sbyte_at::b#32 ← print_sbyte_at::b#20 +Coalesced [142] print_sbyte_at::at#31 ← print_sbyte_at::at#19 +Coalesced [146] print_sbyte_at::b#33 ← print_sbyte_at::b#21 +Coalesced [147] print_sbyte_at::at#32 ← print_sbyte_at::at#20 +Coalesced [153] debug_print::c#9 ← debug_print::c#1 +Coalesced [154] debug_print::i#9 ← debug_print::i#1 +Coalesced [158] print_char_at::at#8 ← print_char_at::at#1 +Coalesced [160] print_sbyte_at::b#49 ← print_sbyte_at::b#22 +Coalesced [168] print_char_at::at#7 ← print_char_at::at#0 +Coalesced [171] print_sbyte_at::b#48 ← print_sbyte_at::b#0 +Coalesced [178] print_char_at::ch#5 ← print_char_at::ch#2 +Coalesced [179] print_char_at::at#5 ← print_char_at::at#2 +Coalesced [184] print_char_at::ch#6 ← print_char_at::ch#3 +Coalesced [185] print_char_at::at#6 ← print_char_at::at#3 +Coalesced [271] print_sbyte_at::b#45 ← print_sbyte_at::b#1 +Coalesced [272] print_sbyte_at::at#33 ← print_sbyte_at::at#0 +Coalesced [276] print_sbyte_at::b#46 ← print_sbyte_at::b#2 +Coalesced [277] print_sbyte_at::at#34 ← print_sbyte_at::at#1 +Coalesced [281] print_sbyte_at::b#47 ← print_sbyte_at::b#3 +Coalesced [282] print_sbyte_at::at#35 ← print_sbyte_at::at#2 +Coalesced [311] debug_print_init::c#8 ← debug_print_init::c#1 +Coalesced [312] debug_print_init::i#8 ← debug_print_init::i#1 +Coalesced [313] debug_print_init::j#3 ← debug_print_init::j#1 +Coalesced [315] print_str_at::str#16 ← print_str_at::str#15 +Coalesced [316] print_str_at::at#16 ← print_str_at::at#15 +Coalesced [323] print_str_at::str#17 ← print_str_at::str#0 +Coalesced [324] print_str_at::at#17 ← print_str_at::at#0 +Coalesced [331] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [339] sprites_init::i#3 ← sprites_init::i#1 Coalesced down to 16 phi equivalence classes Culled Empty Block (label) @4 Culled Empty Block (label) @16 @@ -3697,549 +3640,464 @@ FINAL CONTROL FLOW GRAPH [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((i*i)/256) } - .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } - .if(i>351) { .byte round(((512-i)*(512-i))/256) } - } - }} - kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } - .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } - .if(i>351) { .byte round(((i-511)*(i-511))/256) } - } - }} kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - kickasm(location (const signed byte*) PERSP_Z#0) {{ { - .var d = 256.0 - .var z0 = 6.0 - // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) - .for(var z=0;z<$100;z++) { - .if(z>127) { - .byte round(d / (z0 - ((z - 256) / 64.0))); - } else { - .byte round(d / (z0 - (z / 64.0))); - } - } - } - }} - kickasm(location (const signed byte*) SINH#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) - } - } - }} - kickasm(location (const signed byte*) SINQ#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) - } - } - }} - kickasm(location (const byte*) SINH_LO#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (const byte*) SINH_HI#0) {{ { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (const byte*) SINQ_LO#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - kickasm(location (const byte*) SINQ_HI#0) {{ { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - }} - [11] call main + [2] call main to:@end @end: scope:[] from @1 - [12] phi() + [3] phi() main: scope:[main] from @1 asm { sei } - [14] call sprites_init + [5] call sprites_init to:main::@1 main::@1: scope:[main] from main - [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 - [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 - [17] call debug_print_init + [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 + [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 + [8] call debug_print_init to:main::@2 main::@2: scope:[main] from main::@1 - [18] phi() - [19] call anim + [9] phi() + [10] call anim to:main::@return main::@return: scope:[main] from main::@2 - [20] return + [11] return to:@return anim: scope:[anim] from main::@2 - [21] phi() + [12] phi() to:anim::@1 anim::@1: scope:[anim] from anim anim::@10 - [22] (signed byte) sy#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sy#3 ) - [22] (signed byte) sx#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sx#3 ) + [13] (signed byte) sy#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sy#3 ) + [13] (signed byte) sx#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sx#3 ) to:anim::@2 anim::@2: scope:[anim] from anim::@1 anim::@2 - [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 + [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 to:anim::@3 anim::@3: scope:[anim] from anim::@2 anim::@3 - [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 + [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 to:anim::@4 anim::@4: scope:[anim] from anim::@3 anim::@4 - [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 + [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 to:anim::@5 anim::@5: scope:[anim] from anim::@4 - [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 - [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 - [29] call calculate_matrix + [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 + [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 + [20] call calculate_matrix to:anim::@8 anim::@8: scope:[anim] from anim::@5 - [30] phi() - [31] call store_matrix + [21] phi() + [22] call store_matrix to:anim::@6 anim::@6: scope:[anim] from anim::@8 anim::@9 - [32] (byte) anim::i#2 ← phi( anim::@8/(byte) 0 anim::@9/(byte) anim::i#1 ) - [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) - [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) - [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) - [37] call rotate_matrix + [23] (byte) anim::i#2 ← phi( anim::@8/(byte) 0 anim::@9/(byte) anim::i#1 ) + [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) + [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) + [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) + [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) + [28] call rotate_matrix to:anim::@9 anim::@9: scope:[anim] from anim::@6 - [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) - [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) - [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) - [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) - [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) - [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) - [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 - [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) - [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 - [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) - [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 - [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 - [50] if((byte) anim::i#1!=(byte) 8) goto anim::@6 + [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) + [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) + [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) + [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) + [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) + [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) + [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 + [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) + [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 + [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) + [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 + [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 + [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 to:anim::@7 anim::@7: scope:[anim] from anim::@9 - [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 - [52] call debug_print + [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 + [43] call debug_print to:anim::@10 anim::@10: scope:[anim] from anim::@7 - [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 - [54] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 - [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 + [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 + [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 + [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 to:anim::@1 debug_print: scope:[debug_print] from anim::@7 - [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 + [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 to:debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos1: scope:[debug_print] from debug_print - [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 - [58] call print_sbyte_at + [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + [49] call print_sbyte_at to:debug_print::@2 debug_print::@2: scope:[debug_print] from debug_print::print_sbyte_pos1 - [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 + [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 to:debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos2: scope:[debug_print] from debug_print::@2 - [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 - [61] call print_sbyte_at + [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 + [52] call print_sbyte_at to:debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos3: scope:[debug_print] from debug_print::print_sbyte_pos2 - [62] phi() - [63] call print_sbyte_at + [53] phi() + [54] call print_sbyte_at to:debug_print::@3 debug_print::@3: scope:[debug_print] from debug_print::print_sbyte_pos3 - [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) + [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) to:debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos4: scope:[debug_print] from debug_print::@3 - [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 - [66] call print_sbyte_at + [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 + [57] call print_sbyte_at to:debug_print::@4 debug_print::@4: scope:[debug_print] from debug_print::print_sbyte_pos4 - [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) + [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) to:debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos5: scope:[debug_print] from debug_print::@4 - [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 - [69] call print_sbyte_at + [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + [60] call print_sbyte_at to:debug_print::@5 debug_print::@5: scope:[debug_print] from debug_print::print_sbyte_pos5 - [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) + [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) to:debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos6: scope:[debug_print] from debug_print::@5 - [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 - [72] call print_sbyte_at + [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + [63] call print_sbyte_at to:debug_print::@6 debug_print::@6: scope:[debug_print] from debug_print::print_sbyte_pos6 - [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) + [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) to:debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos7: scope:[debug_print] from debug_print::@6 - [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 - [75] call print_sbyte_at + [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + [66] call print_sbyte_at to:debug_print::@7 debug_print::@7: scope:[debug_print] from debug_print::print_sbyte_pos7 - [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) + [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) to:debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos8: scope:[debug_print] from debug_print::@7 - [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 - [78] call print_sbyte_at + [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + [69] call print_sbyte_at to:debug_print::@8 debug_print::@8: scope:[debug_print] from debug_print::print_sbyte_pos8 - [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) + [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) to:debug_print::print_sbyte_pos9 debug_print::print_sbyte_pos9: scope:[debug_print] from debug_print::@8 - [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 - [81] call print_sbyte_at + [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + [72] call print_sbyte_at to:debug_print::@9 debug_print::@9: scope:[debug_print] from debug_print::print_sbyte_pos9 - [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) + [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) to:debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos10: scope:[debug_print] from debug_print::@9 - [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 - [84] call print_sbyte_at + [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + [75] call print_sbyte_at to:debug_print::@10 debug_print::@10: scope:[debug_print] from debug_print::print_sbyte_pos10 - [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) + [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) to:debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos11: scope:[debug_print] from debug_print::@10 - [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 - [87] call print_sbyte_at + [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + [78] call print_sbyte_at to:debug_print::@11 debug_print::@11: scope:[debug_print] from debug_print::print_sbyte_pos11 - [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) + [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) to:debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos12: scope:[debug_print] from debug_print::@11 - [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 - [90] call print_sbyte_at + [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + [81] call print_sbyte_at to:debug_print::@1 debug_print::@1: scope:[debug_print] from debug_print::@17 debug_print::print_sbyte_pos12 - [91] (byte) debug_print::i#2 ← phi( debug_print::print_sbyte_pos12/(byte) 0 debug_print::@17/(byte) debug_print::i#1 ) - [91] (byte) debug_print::c#2 ← phi( debug_print::print_sbyte_pos12/(byte) 4 debug_print::@17/(byte) debug_print::c#1 ) - [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 - [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) - [94] call print_sbyte_at + [82] (byte) debug_print::i#2 ← phi( debug_print::print_sbyte_pos12/(byte) 0 debug_print::@17/(byte) debug_print::i#1 ) + [82] (byte) debug_print::c#2 ← phi( debug_print::print_sbyte_pos12/(byte) 4 debug_print::@17/(byte) debug_print::c#1 ) + [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 + [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) + [85] call print_sbyte_at to:debug_print::@12 debug_print::@12: scope:[debug_print] from debug_print::@1 - [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 - [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) - [97] call print_sbyte_at + [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 + [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) + [88] call print_sbyte_at to:debug_print::@13 debug_print::@13: scope:[debug_print] from debug_print::@12 - [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 - [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) - [100] call print_sbyte_at + [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 + [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) + [91] call print_sbyte_at to:debug_print::@14 debug_print::@14: scope:[debug_print] from debug_print::@13 - [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 - [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) - [103] call print_sbyte_at + [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 + [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) + [94] call print_sbyte_at to:debug_print::@15 debug_print::@15: scope:[debug_print] from debug_print::@14 - [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 - [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) - [106] call print_sbyte_at + [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 + [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) + [97] call print_sbyte_at to:debug_print::@16 debug_print::@16: scope:[debug_print] from debug_print::@15 - [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 - [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) - [109] call print_sbyte_at + [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 + [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) + [100] call print_sbyte_at to:debug_print::@17 debug_print::@17: scope:[debug_print] from debug_print::@16 - [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 - [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 - [112] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 + [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 + [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 + [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 to:debug_print::@return debug_print::@return: scope:[debug_print] from debug_print::@17 - [113] return + [104] return to:@return print_sbyte_at: scope:[print_sbyte_at] from debug_print::@1 debug_print::@12 debug_print::@13 debug_print::@14 debug_print::@15 debug_print::@16 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@16 debug_print_init::@17 - [114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@12/(byte*) print_sbyte_at::at#16 debug_print::@13/(byte*) print_sbyte_at::at#17 debug_print::@14/(byte*) print_sbyte_at::at#18 debug_print::@15/(byte*) print_sbyte_at::at#19 debug_print::@16/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@16/(byte*) print_sbyte_at::at#1 debug_print_init::@17/(byte*) print_sbyte_at::at#2 ) - [114] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@12/(signed byte) print_sbyte_at::b#17 debug_print::@13/(signed byte) print_sbyte_at::b#18 debug_print::@14/(signed byte) print_sbyte_at::b#19 debug_print::@15/(signed byte) print_sbyte_at::b#20 debug_print::@16/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@16/(signed byte) print_sbyte_at::b#2 debug_print_init::@17/(signed byte) print_sbyte_at::b#3 ) - [115] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 + [105] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@12/(byte*) print_sbyte_at::at#16 debug_print::@13/(byte*) print_sbyte_at::at#17 debug_print::@14/(byte*) print_sbyte_at::at#18 debug_print::@15/(byte*) print_sbyte_at::at#19 debug_print::@16/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@16/(byte*) print_sbyte_at::at#1 debug_print_init::@17/(byte*) print_sbyte_at::at#2 ) + [105] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@12/(signed byte) print_sbyte_at::b#17 debug_print::@13/(signed byte) print_sbyte_at::b#18 debug_print::@14/(signed byte) print_sbyte_at::b#19 debug_print::@15/(signed byte) print_sbyte_at::b#20 debug_print::@16/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@16/(signed byte) print_sbyte_at::b#2 debug_print_init::@17/(signed byte) print_sbyte_at::b#3 ) + [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 to:print_sbyte_at::@3 print_sbyte_at::@3: scope:[print_sbyte_at] from print_sbyte_at - [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 - [117] call print_char_at + [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 + [108] call print_char_at to:print_sbyte_at::@2 print_sbyte_at::@2: scope:[print_sbyte_at] from print_sbyte_at::@3 print_sbyte_at::@4 - [118] (signed byte) print_sbyte_at::b#24 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#22 ) - [119] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 - [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 - [121] call print_byte_at + [109] (signed byte) print_sbyte_at::b#24 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#22 ) + [110] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 + [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 + [112] call print_byte_at to:print_sbyte_at::@return print_sbyte_at::@return: scope:[print_sbyte_at] from print_sbyte_at::@2 - [122] return + [113] return to:@return print_sbyte_at::@1: scope:[print_sbyte_at] from print_sbyte_at - [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 - [124] call print_char_at + [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 + [115] call print_char_at to:print_sbyte_at::@4 print_sbyte_at::@4: scope:[print_sbyte_at] from print_sbyte_at::@1 - [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 + [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 to:print_sbyte_at::@2 print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3 - [126] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) - [126] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) - [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 + [117] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) + [117] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) + [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 to:print_char_at::@return print_char_at::@return: scope:[print_char_at] from print_char_at - [128] return + [119] return to:@return print_byte_at: scope:[print_byte_at] from print_sbyte_at::@2 - [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 - [130] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) - [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - [132] call print_char_at + [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 + [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) + [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + [123] call print_char_at to:print_byte_at::@1 print_byte_at::@1: scope:[print_byte_at] from print_byte_at - [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f - [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 - [135] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) - [136] call print_char_at + [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f + [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 + [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) + [127] call print_char_at to:print_byte_at::@return print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@1 - [137] return + [128] return to:@return rotate_matrix: scope:[rotate_matrix] from anim::@6 - [138] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 - [139] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 - [140] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 + [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 + [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 + [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } to:rotate_matrix::@return rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix - [142] return + [133] return to:@return store_matrix: scope:[store_matrix] from anim::@8 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } to:store_matrix::@return store_matrix::@return: scope:[store_matrix] from store_matrix - [144] return + [135] return to:@return calculate_matrix: scope:[calculate_matrix] from anim::@5 - [145] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - [146] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 - [147] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 - [148] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 - [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 - [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 - [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 - [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 - [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 - [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) - [156] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 - [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) - [158] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 - [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) - [160] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 - [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) - [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) - [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) - [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) - [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) - [166] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 - [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) - [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) - [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) - [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) - [172] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 - [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) - [174] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 - [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) - [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) - [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) - [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) - [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) - [180] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 - [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) - [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) - [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) - [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) - [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) - [186] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 - [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) - [188] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 + [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 + [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 + [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 + [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 + [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 + [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 + [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 + [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 + [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) + [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 + [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) + [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 + [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 + [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) + [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) + [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) + [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) + [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) + [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 + [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) + [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) + [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) + [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) + [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) + [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 + [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) + [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 + [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) + [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) + [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) + [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) + [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 + [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) + [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) + [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) + [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) + [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) + [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 + [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) + [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 to:calculate_matrix::@return calculate_matrix::@return: scope:[calculate_matrix] from calculate_matrix - [189] return + [180] return to:@return debug_print_init: scope:[debug_print_init] from main::@1 - [190] phi() - [191] call print_cls + [181] phi() + [182] call print_cls to:debug_print_init::@4 debug_print_init::@4: scope:[debug_print_init] from debug_print_init - [192] phi() - [193] call print_str_at + [183] phi() + [184] call print_str_at to:debug_print_init::@5 debug_print_init::@5: scope:[debug_print_init] from debug_print_init::@4 - [194] phi() - [195] call print_str_at + [185] phi() + [186] call print_str_at to:debug_print_init::@6 debug_print_init::@6: scope:[debug_print_init] from debug_print_init::@5 - [196] phi() - [197] call print_str_at + [187] phi() + [188] call print_str_at to:debug_print_init::@7 debug_print_init::@7: scope:[debug_print_init] from debug_print_init::@6 - [198] phi() - [199] call print_str_at + [189] phi() + [190] call print_str_at to:debug_print_init::@8 debug_print_init::@8: scope:[debug_print_init] from debug_print_init::@7 - [200] phi() - [201] call print_str_at + [191] phi() + [192] call print_str_at to:debug_print_init::@9 debug_print_init::@9: scope:[debug_print_init] from debug_print_init::@8 - [202] phi() - [203] call print_str_at + [193] phi() + [194] call print_str_at to:debug_print_init::@10 debug_print_init::@10: scope:[debug_print_init] from debug_print_init::@9 - [204] phi() - [205] call print_str_at + [195] phi() + [196] call print_str_at to:debug_print_init::@11 debug_print_init::@11: scope:[debug_print_init] from debug_print_init::@10 - [206] phi() - [207] call print_str_at + [197] phi() + [198] call print_str_at to:debug_print_init::@12 debug_print_init::@12: scope:[debug_print_init] from debug_print_init::@11 - [208] phi() - [209] call print_str_at + [199] phi() + [200] call print_str_at to:debug_print_init::@13 debug_print_init::@13: scope:[debug_print_init] from debug_print_init::@12 - [210] phi() - [211] call print_str_at + [201] phi() + [202] call print_str_at to:debug_print_init::@14 debug_print_init::@14: scope:[debug_print_init] from debug_print_init::@13 - [212] phi() - [213] call print_str_at + [203] phi() + [204] call print_str_at to:debug_print_init::@15 debug_print_init::@15: scope:[debug_print_init] from debug_print_init::@14 - [214] phi() - [215] call print_str_at + [205] phi() + [206] call print_str_at to:debug_print_init::@1 debug_print_init::@1: scope:[debug_print_init] from debug_print_init::@15 debug_print_init::@3 - [216] (byte) debug_print_init::i#2 ← phi( debug_print_init::@15/(byte) 0 debug_print_init::@3/(byte) debug_print_init::i#1 ) - [216] (byte) debug_print_init::c#2 ← phi( debug_print_init::@15/(byte) 4 debug_print_init::@3/(byte) debug_print_init::c#1 ) - [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 - [218] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) - [219] call print_sbyte_at + [207] (byte) debug_print_init::i#2 ← phi( debug_print_init::@15/(byte) 0 debug_print_init::@3/(byte) debug_print_init::i#1 ) + [207] (byte) debug_print_init::c#2 ← phi( debug_print_init::@15/(byte) 4 debug_print_init::@3/(byte) debug_print_init::c#1 ) + [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 + [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) + [210] call print_sbyte_at to:debug_print_init::@16 debug_print_init::@16: scope:[debug_print_init] from debug_print_init::@1 - [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 - [221] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) - [222] call print_sbyte_at + [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 + [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) + [213] call print_sbyte_at to:debug_print_init::@17 debug_print_init::@17: scope:[debug_print_init] from debug_print_init::@16 - [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 - [224] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) - [225] call print_sbyte_at + [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 + [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) + [216] call print_sbyte_at to:debug_print_init::@2 debug_print_init::@2: scope:[debug_print_init] from debug_print_init::@17 debug_print_init::@2 - [226] (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@17/(byte) 0 ) - [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 - [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 - [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 - [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 - [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 - [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 - [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 - [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 - [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 - [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 - [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 - [246] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 - [247] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 + [217] (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@17/(byte) 0 ) + [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 + [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 + [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 + [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 + [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 + [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 + [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 + [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 + [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 + [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 + [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 + [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 + [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 to:debug_print_init::@3 debug_print_init::@3: scope:[debug_print_init] from debug_print_init::@2 - [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 - [249] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 - [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 + [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 + [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 + [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 to:debug_print_init::@return debug_print_init::@return: scope:[debug_print_init] from debug_print_init::@3 - [251] return + [242] return to:@return print_str_at: scope:[print_str_at] from debug_print_init::@10 debug_print_init::@11 debug_print_init::@12 debug_print_init::@13 debug_print_init::@14 debug_print_init::@15 debug_print_init::@4 debug_print_init::@5 debug_print_init::@6 debug_print_init::@7 debug_print_init::@8 debug_print_init::@9 - [252] (byte*) print_str_at::at#15 ← phi( debug_print_init::@9/(const byte*) SCREEN#0+(word)(number) $28*(number) $12 debug_print_init::@10/(const byte*) SCREEN#0+(word)(number) $28*(number) $13 debug_print_init::@11/(const byte*) SCREEN#0+(word)(number) $28*(number) $14 debug_print_init::@12/(const byte*) SCREEN#0+(word)(number) $28*(number) $15 debug_print_init::@13/(const byte*) SCREEN#0+(word)(number) $28*(number) $16 debug_print_init::@14/(const byte*) SCREEN#0+(word)(number) $28*(number) $17 debug_print_init::@15/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 debug_print_init::@4/(const byte*) SCREEN#0+(byte) $22 debug_print_init::@5/(const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 debug_print_init::@6/(const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 debug_print_init::@7/(const byte*) SCREEN#0+(word)(number) $28*(number) $10 debug_print_init::@8/(const byte*) SCREEN#0+(word)(number) $28*(number) $11 ) - [252] (byte*) print_str_at::str#15 ← phi( debug_print_init::@9/(const string) debug_print_init::str5 debug_print_init::@10/(const string) debug_print_init::str6 debug_print_init::@11/(const string) debug_print_init::str7 debug_print_init::@12/(const string) debug_print_init::str8 debug_print_init::@13/(const string) debug_print_init::str9 debug_print_init::@14/(const string) debug_print_init::str10 debug_print_init::@15/(const string) debug_print_init::str11 debug_print_init::@4/(const string) debug_print_init::str debug_print_init::@5/(const string) debug_print_init::str1 debug_print_init::@6/(const string) debug_print_init::str2 debug_print_init::@7/(const string) debug_print_init::str3 debug_print_init::@8/(const string) debug_print_init::str4 ) + [243] (byte*) print_str_at::at#15 ← phi( debug_print_init::@9/(const byte*) SCREEN#0+(word)(number) $28*(number) $12 debug_print_init::@10/(const byte*) SCREEN#0+(word)(number) $28*(number) $13 debug_print_init::@11/(const byte*) SCREEN#0+(word)(number) $28*(number) $14 debug_print_init::@12/(const byte*) SCREEN#0+(word)(number) $28*(number) $15 debug_print_init::@13/(const byte*) SCREEN#0+(word)(number) $28*(number) $16 debug_print_init::@14/(const byte*) SCREEN#0+(word)(number) $28*(number) $17 debug_print_init::@15/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 debug_print_init::@4/(const byte*) SCREEN#0+(byte) $22 debug_print_init::@5/(const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 debug_print_init::@6/(const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 debug_print_init::@7/(const byte*) SCREEN#0+(word)(number) $28*(number) $10 debug_print_init::@8/(const byte*) SCREEN#0+(word)(number) $28*(number) $11 ) + [243] (byte*) print_str_at::str#15 ← phi( debug_print_init::@9/(const string) debug_print_init::str5 debug_print_init::@10/(const string) debug_print_init::str6 debug_print_init::@11/(const string) debug_print_init::str7 debug_print_init::@12/(const string) debug_print_init::str8 debug_print_init::@13/(const string) debug_print_init::str9 debug_print_init::@14/(const string) debug_print_init::str10 debug_print_init::@15/(const string) debug_print_init::str11 debug_print_init::@4/(const string) debug_print_init::str debug_print_init::@5/(const string) debug_print_init::str1 debug_print_init::@6/(const string) debug_print_init::str2 debug_print_init::@7/(const string) debug_print_init::str3 debug_print_init::@8/(const string) debug_print_init::str4 ) to:print_str_at::@1 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 - [253] (byte*) print_str_at::at#13 ← phi( print_str_at/(byte*) print_str_at::at#15 print_str_at::@2/(byte*) print_str_at::at#0 ) - [253] (byte*) print_str_at::str#13 ← phi( print_str_at/(byte*) print_str_at::str#15 print_str_at::@2/(byte*) print_str_at::str#0 ) - [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 + [244] (byte*) print_str_at::at#13 ← phi( print_str_at/(byte*) print_str_at::at#15 print_str_at::@2/(byte*) print_str_at::at#0 ) + [244] (byte*) print_str_at::str#13 ← phi( print_str_at/(byte*) print_str_at::str#15 print_str_at::@2/(byte*) print_str_at::str#0 ) + [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 to:print_str_at::@return print_str_at::@return: scope:[print_str_at] from print_str_at::@1 - [255] return + [246] return to:@return print_str_at::@2: scope:[print_str_at] from print_str_at::@1 - [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) - [257] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 - [258] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 + [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) + [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 + [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 to:print_str_at::@1 print_cls: scope:[print_cls] from debug_print_init - [259] phi() + [250] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [260] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [261] *((byte*) print_cls::sc#2) ← (byte) ' ' - [262] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 + [251] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [252] *((byte*) print_cls::sc#2) ← (byte) ' ' + [253] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [264] return + [255] return to:@return sprites_init: scope:[sprites_init] from main - [265] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff + [256] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff to:sprites_init::@1 sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 - [266] (byte) sprites_init::i#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::i#1 ) - [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 - [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 - [269] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 - [270] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 + [257] (byte) sprites_init::i#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::i#1 ) + [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 + [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 + [260] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 + [261] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 to:sprites_init::@return sprites_init::@return: scope:[sprites_init] from sprites_init::@1 - [271] return + [262] return to:@return null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 blocks: debug_print::@17 debug_print::@16 debug_print::@15 debug_print::@14 debug_print::@13 debug_print::@12 debug_print::@1 in scope print_sbyte_at @@ -4256,15 +4114,11 @@ VARIABLE REGISTER WEIGHTS (byte) GREEN (byte) LIGHT_BLUE (byte) LIGHT_GREY -(signed byte*) PERSP_Z +(signed byte[$100]) PERSP_Z (byte*) RASTER (byte*) SCREEN -(signed byte*) SINH -(byte*) SINH_HI -(byte*) SINH_LO -(signed byte*) SINQ -(byte*) SINQ_HI -(byte*) SINQ_LO +(signed byte[$140]) SINH +(signed byte[$140]) SINQ (byte*) SPRITE (byte*) SPRITES_COLS (byte*) SPRITES_ENABLE @@ -4445,8 +4299,8 @@ VARIABLE REGISTER WEIGHTS (byte) debug_print_init::j#1 151.5 (byte) debug_print_init::j#2 55.54999999999999 (void()) main() -(byte*) mulf_sqr1 -(byte*) mulf_sqr2 +(byte[$200]) mulf_sqr1 +(byte[$200]) mulf_sqr2 (signed byte*) pp (signed byte[8]) pps (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) @@ -4845,33 +4699,8 @@ INITIAL ASM .label psp2 = $f8 .label SCREEN = $400 .const sz = 0 - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2400 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2600 // A single sprite .label SPRITE = $3000 - // Perspective multiplication table containing (d/(z0-z)[z] for each z-value - .label PERSP_Z = $2800 - // Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$20;20] - .label SINH = $2000 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$10,$10] - .label SINQ = $2200 - // 16 bit Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$1f,$1f] - .label SINH_LO = $4000 - // sin(x) = cos(x+PI/2) - .label SINH_HI = $4200 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$0f,$0f] - .label SINQ_LO = $4400 - // sin(x) = cos(x+PI/2) - .label SINQ_HI = $4600 .label COSH = SINH+$40 .label COSQ = SINQ+$40 .label sx = 2 @@ -4881,238 +4710,227 @@ bbegin: jmp b1 //SEG4 @1 b1: -//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} -//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} -//SEG7 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }} -//SEG9 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -// sin(x) = cos(x+PI/2) -//SEG10 kickasm(location (const signed byte*) SINQ#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -// sin(x) = cos(x+PI/2) -//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG13 kickasm(location (const byte*) SINQ_LO#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG14 kickasm(location (const byte*) SINQ_HI#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG15 [11] call main +//SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} +//SEG6 [2] call main jsr main -//SEG16 [12] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG17 @end +//SEG8 @end bend: -//SEG18 main +//SEG9 main main: { - //SEG19 asm { sei } + //SEG10 asm { sei } sei - //SEG20 [14] call sprites_init + //SEG11 [5] call sprites_init jsr sprites_init jmp b1 - //SEG21 main::@1 + //SEG12 main::@1 b1: - //SEG22 [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG13 [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 //mulf_init(); lda #mulf_sqr1 sta psp1+1 - //SEG23 [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG14 [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG24 [17] call debug_print_init - //SEG25 [190] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] + //SEG15 [8] call debug_print_init + //SEG16 [181] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] debug_print_init_from_b1: jsr debug_print_init - //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG27 main::@2 + //SEG18 main::@2 b2: - //SEG28 [19] call anim - //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim] + //SEG19 [10] call anim + //SEG20 [12] phi from main::@2 to anim [phi:main::@2->anim] anim_from_b2: jsr anim jmp breturn - //SEG30 main::@return + //SEG21 main::@return breturn: - //SEG31 [20] return + //SEG22 [11] return rts } -//SEG32 anim +//SEG23 anim anim: { .label _8 = $1d .label _10 = $1e .label i2 = $1c .label i = 4 - //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG24 [13] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG34 [22] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 + //SEG25 [13] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 lda #0 sta sy - //SEG35 [22] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 + //SEG26 [13] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 lda #0 sta sx jmp b1 //signed byte xmin = 0; //signed byte xmax = 0; - //SEG36 anim::@1 + //SEG27 anim::@1 b1: jmp b2 - //SEG37 anim::@2 + //SEG28 anim::@2 b2: - //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG29 [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 jmp b3 - //SEG39 anim::@3 + //SEG30 anim::@3 b3: - //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG31 [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$fe cmp RASTER bne b3 jmp b4 - //SEG41 anim::@4 + //SEG32 anim::@4 b4: - //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG33 [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$fd cmp RASTER bne b4 jmp b5 - //SEG43 anim::@5 + //SEG34 anim::@5 b5: - //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG35 [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 + //SEG36 [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 lda sx sta calculate_matrix.sx - //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 + //SEG37 [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 lda sy sta calculate_matrix.sy - //SEG47 [29] call calculate_matrix + //SEG38 [20] call calculate_matrix jsr calculate_matrix - //SEG48 [30] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8] + //SEG39 [21] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8] b8_from_b5: jmp b8 - //SEG49 anim::@8 + //SEG40 anim::@8 b8: - //SEG50 [31] call store_matrix + //SEG41 [22] call store_matrix jsr store_matrix - //SEG51 [32] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6] + //SEG42 [23] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6] b6_from_b8: - //SEG52 [32] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 + //SEG43 [23] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 lda #0 sta i jmp b6 - //SEG53 [32] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6] + //SEG44 [23] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6] b6_from_b9: - //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy + //SEG45 [23] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy jmp b6 - //SEG55 anim::@6 + //SEG46 anim::@6 b6: - //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG47 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG48 [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta rotate_matrix.x - //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG49 [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda ys,y sta rotate_matrix.y - //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG50 [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda zs,y sta rotate_matrix.z - //SEG60 [37] call rotate_matrix + //SEG51 [28] call rotate_matrix jsr rotate_matrix jmp b9 - //SEG61 anim::@9 + //SEG52 anim::@9 b9: - //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG53 [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 //if(*xrxmax) xmax = *xr; ldy i lda xr sta xrs,y - //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG54 [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yr sta yrs,y - //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG55 [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda zr sta zrs,y - //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG56 [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda pp sta pps,y - //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG57 [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda xp sta xps,y - //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG58 [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yp sta yps,y - //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 + //SEG59 [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta i2 - //SEG69 [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 + //SEG60 [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 lda #$80 clc adc xp sta _8 - //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG61 [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuz1=vbuz2 lda _8 ldy i2 sta SPRITES_XPOS,y - //SEG71 [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 + //SEG62 [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 lda #$80 clc adc yp sta _10 - //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG63 [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 lda _10 ldy i2 sta SPRITES_YPOS,y - //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 + //SEG64 [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG74 [50] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG65 [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b6_from_b9 jmp b7 - //SEG75 anim::@7 + //SEG66 anim::@7 b7: - //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG67 [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_GREY sta BORDERCOL - //SEG77 [52] call debug_print + //SEG68 [43] call debug_print jsr debug_print jmp b10 - //SEG78 anim::@10 + //SEG69 anim::@10 b10: - //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG70 [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 + //SEG71 [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 // Increment angles inc sx inc sx - //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 + //SEG72 [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 lax sy axs #3 stx sy - //SEG82 [22] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1] + //SEG73 [13] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1] b1_from_b10: - //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy - //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy + //SEG74 [13] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy + //SEG75 [13] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy jmp b1 } -//SEG85 debug_print +//SEG76 debug_print debug_print: { .const print_sbyte_pos1_col = $25 .const print_sbyte_pos2_row = 1 @@ -5151,279 +4969,279 @@ debug_print: { .label print_sbyte_pos12_sb = $29 .label c = 5 .label i = 6 - //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 + //SEG77 [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 lda sx sta print_sbyte_pos1_sb jmp print_sbyte_pos1 - //SEG87 debug_print::print_sbyte_pos1 + //SEG78 debug_print::print_sbyte_pos1 print_sbyte_pos1: - //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsz2 + //SEG79 [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos1_sb sta print_sbyte_at.b - //SEG89 [58] call print_sbyte_at - //SEG90 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] + //SEG80 [49] call print_sbyte_at + //SEG81 [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos1: - //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG82 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos1_col sta print_sbyte_at.at+1 - //SEG92 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy + //SEG83 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b2 - //SEG93 debug_print::@2 + //SEG84 debug_print::@2 b2: - //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 + //SEG85 [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 lda sy sta print_sbyte_pos2_sb jmp print_sbyte_pos2 - //SEG95 debug_print::print_sbyte_pos2 + //SEG86 debug_print::print_sbyte_pos2 print_sbyte_pos2: - //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsz2 + //SEG87 [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos2_sb sta print_sbyte_at.b - //SEG97 [61] call print_sbyte_at - //SEG98 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] + //SEG88 [52] call print_sbyte_at + //SEG89 [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos2: - //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG90 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col sta print_sbyte_at.at+1 - //SEG100 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy + //SEG91 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG101 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] + //SEG92 [53] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] print_sbyte_pos3_from_print_sbyte_pos2: jmp print_sbyte_pos3 - //SEG102 debug_print::print_sbyte_pos3 + //SEG93 debug_print::print_sbyte_pos3 print_sbyte_pos3: - //SEG103 [63] call print_sbyte_at - //SEG104 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] + //SEG94 [54] call print_sbyte_at + //SEG95 [105] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos3: - //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG96 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta print_sbyte_at.at+1 - //SEG106 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsz1=vbsc1 + //SEG97 [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsz1=vbsc1 lda #sz sta print_sbyte_at.b jsr print_sbyte_at jmp b3 - //SEG107 debug_print::@3 + //SEG98 debug_print::@3 b3: - //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsz1=_deref_pbsc1 + //SEG99 [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsz1=_deref_pbsc1 lda rotation_matrix sta print_sbyte_pos4_sb jmp print_sbyte_pos4 - //SEG109 debug_print::print_sbyte_pos4 + //SEG100 debug_print::print_sbyte_pos4 print_sbyte_pos4: - //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsz2 + //SEG101 [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos4_sb sta print_sbyte_at.b - //SEG111 [66] call print_sbyte_at - //SEG112 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] + //SEG102 [57] call print_sbyte_at + //SEG103 [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos4: - //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG104 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta print_sbyte_at.at+1 - //SEG114 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy + //SEG105 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b4 - //SEG115 debug_print::@4 + //SEG106 debug_print::@4 b4: - //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsz1=_deref_pbsc1 + //SEG107 [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsz1=_deref_pbsc1 lda rotation_matrix+1 sta print_sbyte_pos5_sb jmp print_sbyte_pos5 - //SEG117 debug_print::print_sbyte_pos5 + //SEG108 debug_print::print_sbyte_pos5 print_sbyte_pos5: - //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsz2 + //SEG109 [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos5_sb sta print_sbyte_at.b - //SEG119 [69] call print_sbyte_at - //SEG120 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] + //SEG110 [60] call print_sbyte_at + //SEG111 [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos5: - //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG112 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta print_sbyte_at.at+1 - //SEG122 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy + //SEG113 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b5 - //SEG123 debug_print::@5 + //SEG114 debug_print::@5 b5: - //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsz1=_deref_pbsc1 + //SEG115 [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsz1=_deref_pbsc1 lda rotation_matrix+2 sta print_sbyte_pos6_sb jmp print_sbyte_pos6 - //SEG125 debug_print::print_sbyte_pos6 + //SEG116 debug_print::print_sbyte_pos6 print_sbyte_pos6: - //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsz2 + //SEG117 [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos6_sb sta print_sbyte_at.b - //SEG127 [72] call print_sbyte_at - //SEG128 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] + //SEG118 [63] call print_sbyte_at + //SEG119 [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos6: - //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG120 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta print_sbyte_at.at+1 - //SEG130 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy + //SEG121 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b6 - //SEG131 debug_print::@6 + //SEG122 debug_print::@6 b6: - //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsz1=_deref_pbsc1 + //SEG123 [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsz1=_deref_pbsc1 lda rotation_matrix+3 sta print_sbyte_pos7_sb jmp print_sbyte_pos7 - //SEG133 debug_print::print_sbyte_pos7 + //SEG124 debug_print::print_sbyte_pos7 print_sbyte_pos7: - //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsz2 + //SEG125 [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos7_sb sta print_sbyte_at.b - //SEG135 [75] call print_sbyte_at - //SEG136 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] + //SEG126 [66] call print_sbyte_at + //SEG127 [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos7: - //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG128 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta print_sbyte_at.at+1 - //SEG138 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy + //SEG129 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b7 - //SEG139 debug_print::@7 + //SEG130 debug_print::@7 b7: - //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsz1=_deref_pbsc1 + //SEG131 [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsz1=_deref_pbsc1 lda rotation_matrix+4 sta print_sbyte_pos8_sb jmp print_sbyte_pos8 - //SEG141 debug_print::print_sbyte_pos8 + //SEG132 debug_print::print_sbyte_pos8 print_sbyte_pos8: - //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsz2 + //SEG133 [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos8_sb sta print_sbyte_at.b - //SEG143 [78] call print_sbyte_at - //SEG144 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] + //SEG134 [69] call print_sbyte_at + //SEG135 [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos8: - //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG136 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta print_sbyte_at.at+1 - //SEG146 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy + //SEG137 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b8 - //SEG147 debug_print::@8 + //SEG138 debug_print::@8 b8: - //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsz1=_deref_pbsc1 + //SEG139 [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsz1=_deref_pbsc1 lda rotation_matrix+5 sta print_sbyte_pos9_sb jmp print_sbyte_pos9 - //SEG149 debug_print::print_sbyte_pos9 + //SEG140 debug_print::print_sbyte_pos9 print_sbyte_pos9: - //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsz2 + //SEG141 [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos9_sb sta print_sbyte_at.b - //SEG151 [81] call print_sbyte_at - //SEG152 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] + //SEG142 [72] call print_sbyte_at + //SEG143 [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos9: - //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG144 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta print_sbyte_at.at+1 - //SEG154 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy + //SEG145 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b9 - //SEG155 debug_print::@9 + //SEG146 debug_print::@9 b9: - //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsz1=_deref_pbsc1 + //SEG147 [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsz1=_deref_pbsc1 lda rotation_matrix+6 sta print_sbyte_pos10_sb jmp print_sbyte_pos10 - //SEG157 debug_print::print_sbyte_pos10 + //SEG148 debug_print::print_sbyte_pos10 print_sbyte_pos10: - //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsz2 + //SEG149 [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos10_sb sta print_sbyte_at.b - //SEG159 [84] call print_sbyte_at - //SEG160 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] + //SEG150 [75] call print_sbyte_at + //SEG151 [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos10: - //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG152 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta print_sbyte_at.at+1 - //SEG162 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy + //SEG153 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b10 - //SEG163 debug_print::@10 + //SEG154 debug_print::@10 b10: - //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsz1=_deref_pbsc1 + //SEG155 [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsz1=_deref_pbsc1 lda rotation_matrix+7 sta print_sbyte_pos11_sb jmp print_sbyte_pos11 - //SEG165 debug_print::print_sbyte_pos11 + //SEG156 debug_print::print_sbyte_pos11 print_sbyte_pos11: - //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsz2 + //SEG157 [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos11_sb sta print_sbyte_at.b - //SEG167 [87] call print_sbyte_at - //SEG168 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] + //SEG158 [78] call print_sbyte_at + //SEG159 [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos11: - //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG160 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta print_sbyte_at.at+1 - //SEG170 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy + //SEG161 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b11 - //SEG171 debug_print::@11 + //SEG162 debug_print::@11 b11: - //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsz1=_deref_pbsc1 + //SEG163 [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsz1=_deref_pbsc1 lda rotation_matrix+8 sta print_sbyte_pos12_sb jmp print_sbyte_pos12 - //SEG173 debug_print::print_sbyte_pos12 + //SEG164 debug_print::print_sbyte_pos12 print_sbyte_pos12: - //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsz2 + //SEG165 [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsz2 lda print_sbyte_pos12_sb sta print_sbyte_at.b - //SEG175 [90] call print_sbyte_at - //SEG176 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] + //SEG166 [81] call print_sbyte_at + //SEG167 [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos12: - //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG168 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col sta print_sbyte_at.at+1 - //SEG178 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy + //SEG169 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG179 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] + //SEG170 [82] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] b1_from_print_sbyte_pos12: - //SEG180 [91] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 + //SEG171 [82] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG181 [91] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 + //SEG172 [82] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG182 [91] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1] + //SEG173 [82] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1] b1_from_b17: - //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy - //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy + //SEG174 [82] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy + //SEG175 [82] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy jmp b1 - //SEG185 debug_print::@1 + //SEG176 debug_print::@1 b1: - //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG177 [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG178 [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xrs,y sta print_sbyte_at.b - //SEG188 [94] call print_sbyte_at - //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] + //SEG179 [85] call print_sbyte_at + //SEG180 [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy - //SEG191 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy + //SEG181 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy + //SEG182 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b12 - //SEG192 debug_print::@12 + //SEG183 debug_print::@12 b12: - //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG184 [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG185 [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda yrs,y sta print_sbyte_at.b - //SEG195 [97] call print_sbyte_at - //SEG196 [114] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] + //SEG186 [88] call print_sbyte_at + //SEG187 [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] print_sbyte_at_from_b12: - //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy - //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy + //SEG188 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy + //SEG189 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b13 - //SEG199 debug_print::@13 + //SEG190 debug_print::@13 b13: - //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG191 [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG192 [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda zrs,y sta print_sbyte_at.b - //SEG202 [100] call print_sbyte_at - //SEG203 [114] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] + //SEG193 [91] call print_sbyte_at + //SEG194 [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] print_sbyte_at_from_b13: - //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy - //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy + //SEG195 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy + //SEG196 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b14 - //SEG206 debug_print::@14 + //SEG197 debug_print::@14 b14: - //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG198 [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*3 adc #0 sta print_sbyte_at.at+1 - //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG199 [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda pps,y sta print_sbyte_at.b - //SEG209 [103] call print_sbyte_at - //SEG210 [114] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] + //SEG200 [94] call print_sbyte_at + //SEG201 [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] print_sbyte_at_from_b14: - //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy - //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy + //SEG202 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy + //SEG203 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b15 - //SEG213 debug_print::@15 + //SEG204 debug_print::@15 b15: - //SEG214 [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG205 [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*4 adc #0 sta print_sbyte_at.at+1 - //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG206 [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xps,y sta print_sbyte_at.b - //SEG216 [106] call print_sbyte_at - //SEG217 [114] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] + //SEG207 [97] call print_sbyte_at + //SEG208 [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] print_sbyte_at_from_b15: - //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy - //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy + //SEG209 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy + //SEG210 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b16 - //SEG220 debug_print::@16 + //SEG211 debug_print::@16 b16: - //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG212 [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*5 adc #0 sta print_sbyte_at.at+1 - //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG213 [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda yps,y sta print_sbyte_at.b - //SEG223 [109] call print_sbyte_at - //SEG224 [114] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] + //SEG214 [100] call print_sbyte_at + //SEG215 [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] print_sbyte_at_from_b16: - //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy - //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy + //SEG216 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy + //SEG217 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b17 - //SEG227 debug_print::@17 + //SEG218 debug_print::@17 b17: - //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG219 [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c axs #-[4] stx c - //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 + //SEG220 [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG230 [112] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG221 [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b17 jmp breturn - //SEG231 debug_print::@return + //SEG222 debug_print::@return breturn: - //SEG232 [113] return + //SEG223 [104] return rts } -//SEG233 print_sbyte_at +//SEG224 print_sbyte_at // Print a signed byte as hex at a specific screen position // print_sbyte_at(signed byte zeropage(9) b, byte* zeropage(7) at) print_sbyte_at: { .label b = 9 .label at = 7 - //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG225 [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 jmp b3 - //SEG235 print_sbyte_at::@3 + //SEG226 print_sbyte_at::@3 b3: - //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 + //SEG227 [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG237 [117] call print_char_at - //SEG238 [126] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG228 [108] call print_char_at + //SEG229 [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG239 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG240 [126] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG230 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG231 [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] + //SEG232 [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] b2_from_b3: b2_from_b4: - //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy + //SEG233 [109] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG243 print_sbyte_at::@2 + //SEG234 print_sbyte_at::@2 b2: - //SEG244 [119] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 -- vbuz1=vbuz2 + //SEG235 [110] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 -- vbuz1=vbuz2 lda b sta print_byte_at.b - //SEG245 [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 -- pbuz1=pbuz2_plus_1 + //SEG236 [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -5608,32 +5426,32 @@ print_sbyte_at: { lda at+1 adc #0 sta print_byte_at.at+1 - //SEG246 [121] call print_byte_at + //SEG237 [112] call print_byte_at jsr print_byte_at jmp breturn - //SEG247 print_sbyte_at::@return + //SEG238 print_sbyte_at::@return breturn: - //SEG248 [122] return + //SEG239 [113] return rts - //SEG249 print_sbyte_at::@1 + //SEG240 print_sbyte_at::@1 b1: - //SEG250 [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 + //SEG241 [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG251 [124] call print_char_at - //SEG252 [126] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG242 [115] call print_char_at + //SEG243 [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG253 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG254 [126] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG244 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG245 [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at jmp b4 - //SEG255 print_sbyte_at::@4 + //SEG246 print_sbyte_at::@4 b4: - //SEG256 [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 + //SEG247 [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5641,23 +5459,23 @@ print_sbyte_at: { sta b jmp b2_from_b4 } -//SEG257 print_char_at +//SEG248 print_char_at // Print a single char // print_char_at(byte zeropage($a) ch, byte* zeropage($b) at) print_char_at: { .label at = $b .label ch = $a - //SEG258 [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG249 [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y jmp breturn - //SEG259 print_char_at::@return + //SEG250 print_char_at::@return breturn: - //SEG260 [128] return + //SEG251 [119] return rts } -//SEG261 print_byte_at +//SEG252 print_byte_at // Print a byte as HEX at a specific position // print_byte_at(byte zeropage($2a) b, byte* zeropage($2b) at) print_byte_at: { @@ -5665,36 +5483,36 @@ print_byte_at: { .label _2 = $2e .label b = $2a .label at = $2b - //SEG262 [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG253 [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG263 [130] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG254 [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char_at.ch - //SEG264 [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 + //SEG255 [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG265 [132] call print_char_at - //SEG266 [126] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG256 [123] call print_char_at + //SEG257 [117] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG267 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG268 [126] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG258 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG259 [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG269 print_byte_at::@1 + //SEG260 print_byte_at::@1 b1: - //SEG270 [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG261 [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG271 [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz2_plus_1 + //SEG262 [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -5702,23 +5520,23 @@ print_byte_at: { lda at+1 adc #0 sta print_char_at.at+1 - //SEG272 [135] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG263 [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char_at.ch - //SEG273 [136] call print_char_at - //SEG274 [126] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG264 [127] call print_char_at + //SEG265 [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG275 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG276 [126] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG266 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG267 [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG277 print_byte_at::@return + //SEG268 print_byte_at::@return breturn: - //SEG278 [137] return + //SEG269 [128] return rts } -//SEG279 rotate_matrix +//SEG270 rotate_matrix // Rotate a 3D point (x,y,z) using the rotation matrix // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. @@ -5728,16 +5546,16 @@ rotate_matrix: { .label x = $19 .label y = $1a .label z = $1b - //SEG280 [138] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 + //SEG271 [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 lda x sta xr - //SEG281 [139] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 + //SEG272 [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 lda y sta yr - //SEG282 [140] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 + //SEG273 [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 lda z sta zr - //SEG283 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } + //SEG274 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } ldx zr C1: lda mulf_sqr1,x @@ -5825,17 +5643,17 @@ rotate_matrix: { sbc (psp2),y sta xp jmp breturn - //SEG284 rotate_matrix::@return + //SEG275 rotate_matrix::@return breturn: - //SEG285 [142] return + //SEG276 [133] return rts } -//SEG286 store_matrix +//SEG277 store_matrix // Store the rotation matrix into the rotation routine rotate() // After this each call to rotate() will rotate a point with the matrix // Implemented in assembler to utilize seriously fast multiplication store_matrix: { - //SEG287 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } + //SEG278 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } lda rotation_matrix+0 sta rotate_matrix.A1+1 eor #$ff @@ -5873,12 +5691,12 @@ store_matrix: { eor #$ff sta rotate_matrix.I2+1 jmp breturn - //SEG288 store_matrix::@return + //SEG279 store_matrix::@return breturn: - //SEG289 [144] return + //SEG280 [135] return rts } -//SEG290 calculate_matrix +//SEG281 calculate_matrix // Prepare the 3x3 rotation matrix into rotation_matrix[] // Angles sx, sy, sz are based on 2*PI=$100 // Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt @@ -5921,240 +5739,240 @@ calculate_matrix: { .label t8 = $36 .label t9 = $37 .label t10 = $38 - //SEG291 [145] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 + //SEG282 [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 lda sy sta t1 - //SEG292 [146] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 + //SEG283 [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 lda sy sta t2 - //SEG293 [147] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2 + //SEG284 [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2 lda sx sta t3 - //SEG294 [148] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2 + //SEG285 [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2 lda sx sta t4 - //SEG295 [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsz2_plus_vbsz3 + //SEG286 [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsz2_plus_vbsz3 lda sx clc adc t2 sta t5 - //SEG296 [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_minus_vbsz3 + //SEG287 [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_minus_vbsz3 lda sx sec sbc t1 sta t6 - //SEG297 [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_plus_vbsz3 + //SEG288 [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_plus_vbsz3 lda sx clc adc t1 sta t7 - //SEG298 [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 + //SEG289 [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 lda t2 sec sbc sx sta t8 - //SEG299 [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 + //SEG290 [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 lda sy sec sbc sx sta t9 - //SEG300 [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsz3 + //SEG291 [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsz3 lda sy clc adc sx sta t10 - //SEG301 [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG292 [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldy t1 lda COSH,y ldy t2 clc adc COSH,y sta _10 - //SEG302 [156] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsz1 + //SEG293 [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsz1 lda _10 sta rotation_matrix - //SEG303 [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG294 [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldy t1 lda SINH,y ldy t2 sec sbc SINH,y sta _11 - //SEG304 [158] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsz1 + //SEG295 [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsz1 lda _11 sta rotation_matrix+1 - //SEG305 [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz2 + //SEG296 [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz2 ldy sy clc lda SINH,y adc SINH,y sta _12 - //SEG306 [160] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsz1 + //SEG297 [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsz1 lda _12 sta rotation_matrix+2 - //SEG307 [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG298 [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldy t3 lda SINH,y ldy t4 sec sbc SINH,y sta _13 - //SEG308 [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG299 [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _13 ldy t6 clc adc COSQ,y sta _14 - //SEG309 [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG300 [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _14 ldy t5 sec sbc COSQ,y sta _15 - //SEG310 [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG301 [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _15 ldy t8 clc adc COSQ,y sta _16 - //SEG311 [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG302 [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _16 ldy t7 sec sbc COSQ,y sta _17 - //SEG312 [166] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsz1 + //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsz1 lda _17 sta rotation_matrix+3 - //SEG313 [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG304 [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldy t3 lda COSH,y ldy t4 clc adc COSH,y sta _18 - //SEG314 [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG305 [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _18 ldy t5 clc adc SINQ,y sta _19 - //SEG315 [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG306 [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _19 ldy t6 sec sbc SINQ,y sta _20 - //SEG316 [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG307 [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _20 ldy t7 sec sbc SINQ,y sta _21 - //SEG317 [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG308 [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _21 ldy t8 sec sbc SINQ,y sta _22 - //SEG318 [172] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsz1 + //SEG309 [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsz1 lda _22 sta rotation_matrix+4 - //SEG319 [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG310 [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldy t9 lda SINH,y ldy t10 sec sbc SINH,y sta _23 - //SEG320 [174] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsz1 + //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsz1 lda _23 sta rotation_matrix+5 - //SEG321 [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG312 [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 ldy t4 lda COSH,y ldy t3 sec sbc COSH,y sta _24 - //SEG322 [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG313 [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _24 ldy t6 clc adc SINQ,y sta _25 - //SEG323 [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG314 [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _25 ldy t5 sec sbc SINQ,y sta _26 - //SEG324 [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG315 [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _26 ldy t8 sec sbc SINQ,y sta _27 - //SEG325 [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG316 [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _27 ldy t7 sec sbc SINQ,y sta _28 - //SEG326 [180] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsz1 + //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsz1 lda _28 sta rotation_matrix+6 - //SEG327 [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG318 [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldy t3 lda SINH,y ldy t4 clc adc SINH,y sta _29 - //SEG328 [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG319 [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _29 ldy t6 clc adc COSQ,y sta _30 - //SEG329 [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG320 [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _30 ldy t5 sec sbc COSQ,y sta _31 - //SEG330 [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG321 [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 lda _31 ldy t7 clc adc COSQ,y sta _32 - //SEG331 [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 + //SEG322 [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 lda _32 ldy t8 sec sbc COSQ,y sta _33 - //SEG332 [186] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsz1 + //SEG323 [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsz1 lda _33 sta rotation_matrix+7 - //SEG333 [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 + //SEG324 [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 ldy t9 lda COSH,y ldy t10 clc adc COSH,y sta _34 - //SEG334 [188] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsz1 + //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsz1 lda _34 sta rotation_matrix+8 jmp breturn - //SEG335 calculate_matrix::@return + //SEG326 calculate_matrix::@return breturn: - //SEG336 [189] return + //SEG327 [180] return rts } -//SEG337 debug_print_init +//SEG328 debug_print_init debug_print_init: { .label COLS = $d800 .label at_line = SCREEN+$10*$28 @@ -6172,255 +5990,255 @@ debug_print_init: { .label j = $f .label c = $d .label i = $e - //SEG338 [191] call print_cls - //SEG339 [259] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] + //SEG329 [182] call print_cls + //SEG330 [250] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] print_cls_from_debug_print_init: jsr print_cls - //SEG340 [192] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4] + //SEG331 [183] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4] b4_from_debug_print_init: jmp b4 - //SEG341 debug_print_init::@4 + //SEG332 debug_print_init::@4 b4: - //SEG342 [193] call print_str_at - //SEG343 [252] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at] + //SEG333 [184] call print_str_at + //SEG334 [243] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at] print_str_at_from_b4: - //SEG344 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 + //SEG335 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$22 sta print_str_at.at+1 - //SEG345 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 + //SEG336 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG346 [194] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5] + //SEG337 [185] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5] b5_from_b4: jmp b5 - //SEG347 debug_print_init::@5 + //SEG338 debug_print_init::@5 b5: - //SEG348 [195] call print_str_at - //SEG349 [252] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] + //SEG339 [186] call print_str_at + //SEG340 [243] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] print_str_at_from_b5: - //SEG350 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 + //SEG341 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*1+$22 sta print_str_at.at+1 - //SEG351 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 + //SEG342 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG352 [196] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] + //SEG343 [187] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] b6_from_b5: jmp b6 - //SEG353 debug_print_init::@6 + //SEG344 debug_print_init::@6 b6: - //SEG354 [197] call print_str_at - //SEG355 [252] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] + //SEG345 [188] call print_str_at + //SEG346 [243] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] print_str_at_from_b6: - //SEG356 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 + //SEG347 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*2+$22 sta print_str_at.at+1 - //SEG357 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 + //SEG348 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG358 [198] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] + //SEG349 [189] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] b7_from_b6: jmp b7 - //SEG359 debug_print_init::@7 + //SEG350 debug_print_init::@7 b7: - //SEG360 [199] call print_str_at - //SEG361 [252] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] + //SEG351 [190] call print_str_at + //SEG352 [243] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] print_str_at_from_b7: - //SEG362 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 + //SEG353 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$10 sta print_str_at.at+1 - //SEG363 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 + //SEG354 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG364 [200] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] + //SEG355 [191] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] b8_from_b7: jmp b8 - //SEG365 debug_print_init::@8 + //SEG356 debug_print_init::@8 b8: - //SEG366 [201] call print_str_at - //SEG367 [252] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] + //SEG357 [192] call print_str_at + //SEG358 [243] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] print_str_at_from_b8: - //SEG368 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 + //SEG359 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$11 sta print_str_at.at+1 - //SEG369 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 + //SEG360 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 lda #str4 sta print_str_at.str+1 jsr print_str_at - //SEG370 [202] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] + //SEG361 [193] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] b9_from_b8: jmp b9 - //SEG371 debug_print_init::@9 + //SEG362 debug_print_init::@9 b9: - //SEG372 [203] call print_str_at - //SEG373 [252] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] + //SEG363 [194] call print_str_at + //SEG364 [243] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] print_str_at_from_b9: - //SEG374 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 + //SEG365 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$12 sta print_str_at.at+1 - //SEG375 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 + //SEG366 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 lda #str5 sta print_str_at.str+1 jsr print_str_at - //SEG376 [204] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] + //SEG367 [195] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] b10_from_b9: jmp b10 - //SEG377 debug_print_init::@10 + //SEG368 debug_print_init::@10 b10: - //SEG378 [205] call print_str_at - //SEG379 [252] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] + //SEG369 [196] call print_str_at + //SEG370 [243] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] print_str_at_from_b10: - //SEG380 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 + //SEG371 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$13 sta print_str_at.at+1 - //SEG381 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 + //SEG372 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 lda #str6 sta print_str_at.str+1 jsr print_str_at - //SEG382 [206] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] + //SEG373 [197] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] b11_from_b10: jmp b11 - //SEG383 debug_print_init::@11 + //SEG374 debug_print_init::@11 b11: - //SEG384 [207] call print_str_at - //SEG385 [252] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] + //SEG375 [198] call print_str_at + //SEG376 [243] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] print_str_at_from_b11: - //SEG386 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 + //SEG377 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$14 sta print_str_at.at+1 - //SEG387 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 + //SEG378 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 lda #str7 sta print_str_at.str+1 jsr print_str_at - //SEG388 [208] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] + //SEG379 [199] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] b12_from_b11: jmp b12 - //SEG389 debug_print_init::@12 + //SEG380 debug_print_init::@12 b12: - //SEG390 [209] call print_str_at - //SEG391 [252] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] + //SEG381 [200] call print_str_at + //SEG382 [243] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] print_str_at_from_b12: - //SEG392 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 + //SEG383 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$15 sta print_str_at.at+1 - //SEG393 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 + //SEG384 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 lda #str8 sta print_str_at.str+1 jsr print_str_at - //SEG394 [210] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] + //SEG385 [201] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] b13_from_b12: jmp b13 - //SEG395 debug_print_init::@13 + //SEG386 debug_print_init::@13 b13: - //SEG396 [211] call print_str_at - //SEG397 [252] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] + //SEG387 [202] call print_str_at + //SEG388 [243] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] print_str_at_from_b13: - //SEG398 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG389 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$16 sta print_str_at.at+1 - //SEG399 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG390 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str9 sta print_str_at.str+1 jsr print_str_at - //SEG400 [212] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] + //SEG391 [203] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] b14_from_b13: jmp b14 - //SEG401 debug_print_init::@14 + //SEG392 debug_print_init::@14 b14: - //SEG402 [213] call print_str_at - //SEG403 [252] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] + //SEG393 [204] call print_str_at + //SEG394 [243] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] print_str_at_from_b14: - //SEG404 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 + //SEG395 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$17 sta print_str_at.at+1 - //SEG405 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 + //SEG396 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 lda #str10 sta print_str_at.str+1 jsr print_str_at - //SEG406 [214] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] + //SEG397 [205] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] b15_from_b14: jmp b15 - //SEG407 debug_print_init::@15 + //SEG398 debug_print_init::@15 b15: - //SEG408 [215] call print_str_at - //SEG409 [252] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] + //SEG399 [206] call print_str_at + //SEG400 [243] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] print_str_at_from_b15: - //SEG410 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 + //SEG401 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$18 sta print_str_at.at+1 - //SEG411 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 + //SEG402 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 lda #str11 sta print_str_at.str+1 jsr print_str_at - //SEG412 [216] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1] + //SEG403 [207] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1] b1_from_b15: - //SEG413 [216] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 + //SEG404 [207] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG414 [216] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 + //SEG405 [207] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG415 [216] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] + //SEG406 [207] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] b1_from_b3: - //SEG416 [216] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy - //SEG417 [216] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy + //SEG407 [207] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy + //SEG408 [207] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy jmp b1 - //SEG418 debug_print_init::@1 + //SEG409 debug_print_init::@1 b1: - //SEG419 [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG410 [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG420 [218] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG411 [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda xs,y sta print_sbyte_at.b - //SEG421 [219] call print_sbyte_at - //SEG422 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] + //SEG412 [210] call print_sbyte_at + //SEG413 [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG423 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy - //SEG424 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy + //SEG414 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy + //SEG415 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b16 - //SEG425 debug_print_init::@16 + //SEG416 debug_print_init::@16 b16: - //SEG426 [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG417 [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG427 [221] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG418 [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda ys,y sta print_sbyte_at.b - //SEG428 [222] call print_sbyte_at - //SEG429 [114] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] + //SEG419 [213] call print_sbyte_at + //SEG420 [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] print_sbyte_at_from_b16: - //SEG430 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy - //SEG431 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy + //SEG421 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy + //SEG422 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b17 - //SEG432 debug_print_init::@17 + //SEG423 debug_print_init::@17 b17: - //SEG433 [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG424 [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG434 [224] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG425 [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda zs,y sta print_sbyte_at.b - //SEG435 [225] call print_sbyte_at - //SEG436 [114] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] + //SEG426 [216] call print_sbyte_at + //SEG427 [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] print_sbyte_at_from_b17: - //SEG437 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy - //SEG438 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy + //SEG428 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy + //SEG429 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG439 [226] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2] + //SEG430 [217] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2] b2_from_b17: - //SEG440 [226] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuz1=vbuc1 + //SEG431 [217] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG441 [226] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] + //SEG432 [217] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] b2_from_b2: - //SEG442 [226] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy + //SEG433 [217] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy jmp b2 - //SEG443 debug_print_init::@2 + //SEG434 debug_print_init::@2 b2: - //SEG444 [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 + //SEG435 [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 lax i axs #-[8] stx col - //SEG445 [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG436 [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols adc #0 sta _41+1 - //SEG446 [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG437 [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_41),y - //SEG447 [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG438 [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*1 adc #0 sta _44+1 - //SEG448 [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG439 [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_44),y - //SEG449 [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG440 [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*2 adc #0 sta _47+1 - //SEG450 [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG441 [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_47),y - //SEG451 [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG442 [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*3 adc #0 sta _50+1 - //SEG452 [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG443 [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_50),y - //SEG453 [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG444 [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*4 adc #0 sta _53+1 - //SEG454 [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG445 [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_53),y - //SEG455 [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG446 [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*5 adc #0 sta _56+1 - //SEG456 [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG447 [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_56),y - //SEG457 [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG448 [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*6 adc #0 sta _59+1 - //SEG458 [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG449 [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_59),y - //SEG459 [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG450 [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*7 adc #0 sta _62+1 - //SEG460 [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG451 [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_62),y - //SEG461 [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG452 [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*8 adc #0 sta _65+1 - //SEG462 [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG453 [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy j sta (_65),y - //SEG463 [246] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG454 [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG464 [247] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG455 [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda #4 cmp j bne b2_from_b2 jmp b3 - //SEG465 debug_print_init::@3 + //SEG456 debug_print_init::@3 b3: - //SEG466 [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG457 [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c axs #-[4] stx c - //SEG467 [249] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG458 [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG468 [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG459 [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b3 jmp breturn - //SEG469 debug_print_init::@return + //SEG460 debug_print_init::@return breturn: - //SEG470 [251] return + //SEG461 [242] return rts str: .text "sx@" str1: .text "sy@" @@ -6641,77 +6459,77 @@ debug_print_init: { str10: .text "xp@" str11: .text "yp@" } -//SEG471 print_str_at +//SEG462 print_str_at // Print a string at a specific screen position // print_str_at(byte* zeropage($10) str, byte* zeropage($12) at) print_str_at: { .label at = $12 .label str = $10 - //SEG472 [253] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG463 [244] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] b1_from_print_str_at: b1_from_b2: - //SEG473 [253] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG474 [253] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG464 [244] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG465 [244] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 - //SEG475 print_str_at::@1 + //SEG466 print_str_at::@1 b1: - //SEG476 [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG467 [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG477 print_str_at::@return + //SEG468 print_str_at::@return breturn: - //SEG478 [255] return + //SEG469 [246] return rts - //SEG479 print_str_at::@2 + //SEG470 print_str_at::@2 b2: - //SEG480 [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG471 [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG481 [257] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 + //SEG472 [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG482 [258] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 + //SEG473 [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG483 print_cls +//SEG474 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $14 - //SEG484 [260] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG475 [251] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG485 [260] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG476 [251] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_screen sta sc+1 jmp b1 - //SEG486 [260] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG477 [251] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG487 [260] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG478 [251] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG488 print_cls::@1 + //SEG479 print_cls::@1 b1: - //SEG489 [261] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG480 [252] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG490 [262] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG481 [253] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG491 [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG482 [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_screen+$3e8 bne b1_from_b1 @@ -6719,53 +6537,53 @@ print_cls: { cmp #sprites_init::@1] + //SEG487 [257] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG497 [266] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 + //SEG488 [257] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG498 [266] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG489 [257] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG499 [266] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG490 [257] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy jmp b1 - //SEG500 sprites_init::@1 + //SEG491 sprites_init::@1 b1: - //SEG501 [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG492 [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuz1=vbuc2 lda #SPRITE/$40 ldy i sta sprites_ptr,y - //SEG502 [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG493 [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #GREEN ldy i sta SPRITES_COLS,y - //SEG503 [269] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG494 [260] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG504 [270] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG495 [261] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b1 jmp breturn - //SEG505 sprites_init::@return + //SEG496 sprites_init::@return breturn: - //SEG506 [271] return + //SEG497 [262] return rts } -//SEG507 File Data +//SEG498 File Data print_hextab: .text "0123456789abcdef" // Positions to rotate xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34 @@ -6782,28 +6600,29 @@ sprites_init: { yps: .fill 8, 0 // The rotation matrix rotation_matrix: .fill 9, 0 -.pc = mulf_sqr1 "mulf_sqr1" - .for(var i=0;i<$200;i++) { + // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). + // f(x) = >(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } -.pc = SPRITE "SPRITE" - .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) - .for (var y=0; y<21; y++) - .for (var x=0;x<3; x++) - .byte pic.getSinglecolorByte(x,y) - -.pc = PERSP_Z "PERSP_Z" - { + // Perspective multiplication table containing (d/(z0-z)[z] for each z-value + .align $100 +PERSP_Z: +{ .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) @@ -6816,8 +6635,12 @@ sprites_init: { } } -.pc = SINH "SINH" - { + // Sine and Cosine Tables + // Angles: $00=0, $80=PI,$100=2*PI + // Half Sine/Cosine: signed fixed [-$20;20] + .align $40 +SINH: +{ .var min = -$2000 .var max = $2000 .var ampl = max-min; @@ -6827,8 +6650,10 @@ sprites_init: { } } -.pc = SINQ "SINQ" - { + // Quarter Sine/Cosine: signed fixed [-$10,$10] + .align $40 +SINQ: +{ .var min = -$1000 .var max = $1000 .var ampl = max-min; @@ -6838,91 +6663,53 @@ sprites_init: { } } -.pc = SINH_LO "SINH_LO" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINH_HI "SINH_HI" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_LO "SINQ_LO" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_HI "SINQ_HI" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } +.pc = SPRITE "SPRITE" + .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) + .for (var y=0; y<21; y++) + .for (var x=0;x<3; x++) + .byte pic.getSinglecolorByte(x,y) REGISTER UPLIFT POTENTIAL REGISTERS -Statement [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ] -Statement [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a +Statement [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] -Statement [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a -Statement [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a -Statement [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a +Statement [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a +Statement [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a +Statement [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a +Statement [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a +Statement [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a +Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a +Statement [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ anim::i2#0 ] -Statement [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a -Statement [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:11::anim:19 [ sx#3 sy#3 ] ) always clobbers reg byte a -Statement [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a +Statement [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a +Statement [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a +Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] -Statement [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a -Statement [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a -Statement [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a -Statement [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a -Statement [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a -Statement [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a -Statement [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a +Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a +Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a +Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a +Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a +Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a +Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Statement [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ print_byte_at::b#0 ] -Statement [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:219::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:222::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:225::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:219::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:222::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:225::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a +Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] @@ -6931,11 +6718,11 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ de Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:42 [ print_byte_at::b#0 ] -Statement [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Statement [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ print_byte_at::$2 ] Statement asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } always clobbers reg byte a reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ] @@ -6943,303 +6730,303 @@ Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ sy Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] Statement asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } always clobbers reg byte a -Statement [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a +Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ calculate_matrix::sx#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ calculate_matrix::t1#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ calculate_matrix::t2#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ calculate_matrix::t3#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ calculate_matrix::t4#0 ] -Statement [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a +Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ calculate_matrix::t5#0 ] -Statement [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a +Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ calculate_matrix::t6#0 ] -Statement [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a +Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ calculate_matrix::t7#0 ] -Statement [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a +Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ calculate_matrix::t8#0 ] -Statement [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a +Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ calculate_matrix::t9#0 ] -Statement [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a +Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ calculate_matrix::t10#0 ] -Statement [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a -Statement [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a -Statement [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a -Statement [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a -Statement [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a -Statement [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a -Statement [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a -Statement [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a -Statement [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a -Statement [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a -Statement [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a -Statement [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a -Statement [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a -Statement [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a -Statement [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a -Statement [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a -Statement [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a -Statement [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a -Statement [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a -Statement [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a -Statement [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a -Statement [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a -Statement [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a -Statement [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a -Statement [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a +Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a +Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a +Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a +Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a +Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a +Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a +Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a +Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a +Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a +Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a +Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a +Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a +Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a +Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a +Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a +Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a +Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a +Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a +Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a +Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a +Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a +Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a +Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a +Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ] -Statement [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a +Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ debug_print_init::col#0 ] -Statement [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a -Statement [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a -Statement [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a -Statement [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a -Statement [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a -Statement [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a -Statement [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a -Statement [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a -Statement [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a -Statement [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:11::debug_print_init:17 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x +Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a +Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a +Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a +Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a +Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a +Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a +Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a +Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a +Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a +Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Statement [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:11::debug_print_init:17 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a -Statement [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:193 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:195 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:197 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:199 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:201 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:203 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:205 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:207 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:209 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:211 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:213 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:215 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:193 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:195 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:197 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:199 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:201 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:203 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:205 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:207 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:209 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:211 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:213 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:215 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [261] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:11::debug_print_init:17::print_cls:191 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:11::debug_print_init:17::print_cls:191 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [265] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:11::sprites_init:14 [ ] ) always clobbers reg byte a -Statement [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a +Statement [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y +Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y +Statement [252] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::debug_print_init:8::print_cls:182 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::debug_print_init:8::print_cls:182 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [256] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a +Statement [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ sprites_init::i#2 sprites_init::i#1 ] -Statement [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y -Statement [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y +Statement [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y +Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:25 [ rotate_matrix::x#0 ] -Statement [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y +Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ rotate_matrix::y#0 ] -Statement [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a -Statement [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a -Statement [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a -Statement [50] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a -Statement [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:11::anim:19 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x -Statement [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a -Statement [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a -Statement [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a -Statement [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a -Statement [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a -Statement [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a -Statement [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x +Statement [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a +Statement [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a +Statement [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a +Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a +Statement [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x +Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a +Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a +Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a +Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a +Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a +Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a +Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] -Statement [112] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a -Statement [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:219::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:222::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:225::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:219::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:222::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:225::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y -Statement [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a +Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a +Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y +Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a Statement asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } always clobbers reg byte a reg byte x reg byte y Statement asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } always clobbers reg byte a -Statement [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a -Statement [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a -Statement [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a -Statement [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a -Statement [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a -Statement [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a -Statement [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a -Statement [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a -Statement [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a -Statement [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a -Statement [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a -Statement [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a -Statement [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a -Statement [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a -Statement [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a -Statement [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a -Statement [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a -Statement [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a -Statement [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a -Statement [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a -Statement [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a -Statement [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a -Statement [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a -Statement [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a -Statement [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a -Statement [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a -Statement [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a -Statement [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a -Statement [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a -Statement [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a -Statement [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a -Statement [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [218] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [221] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [224] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a -Statement [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a -Statement [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a -Statement [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a -Statement [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a -Statement [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a -Statement [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a -Statement [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a -Statement [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a -Statement [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a -Statement [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:11::debug_print_init:17 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x -Statement [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:11::debug_print_init:17 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a -Statement [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:193 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:195 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:197 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:199 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:201 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:203 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:205 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:207 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:209 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:211 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:213 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:215 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:193 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:195 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:197 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:199 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:201 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:203 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:205 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:207 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:209 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:211 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:213 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:215 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [261] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:11::debug_print_init:17::print_cls:191 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:11::debug_print_init:17::print_cls:191 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [265] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:11::sprites_init:14 [ ] ) always clobbers reg byte a -Statement [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 [ ] ( main:11 [ ] ) always clobbers reg byte a -Statement [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y -Statement [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y -Statement [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y -Statement [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y -Statement [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a -Statement [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a -Statement [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a -Statement [50] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a -Statement [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a -Statement [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:11::anim:19 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x -Statement [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a -Statement [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ) always clobbers reg byte y -Statement [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a -Statement [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ) always clobbers reg byte y -Statement [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a -Statement [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ) always clobbers reg byte y -Statement [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a -Statement [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ) always clobbers reg byte y -Statement [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a -Statement [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ) always clobbers reg byte y -Statement [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a -Statement [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ) always clobbers reg byte y -Statement [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x -Statement [112] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a -Statement [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:219 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:222 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:225 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:219::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:222::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:225::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:124 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:124 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:219::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:222::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:225::print_char_at:124 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121::print_char_at:132 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121::print_char_at:132 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121::print_char_at:136 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121::print_char_at:136 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y -Statement [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:121 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:121 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:219::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:222::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:225::print_byte_at:121 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a +Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a +Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a +Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a +Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a +Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a +Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a +Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a +Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a +Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a +Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a +Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a +Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a +Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a +Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a +Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a +Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a +Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a +Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a +Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a +Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a +Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a +Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a +Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a +Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a +Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a +Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a +Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a +Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a +Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a +Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a +Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a +Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a +Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a +Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a +Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a +Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a +Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a +Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a +Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a +Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a +Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x +Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a +Statement [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y +Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y +Statement [252] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::debug_print_init:8::print_cls:182 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::debug_print_init:8::print_cls:182 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [256] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a +Statement [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y +Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y +Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y +Statement [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y +Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a +Statement [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a +Statement [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a +Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a +Statement [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a +Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x +Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a +Statement [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ) always clobbers reg byte y +Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a +Statement [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ) always clobbers reg byte y +Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a +Statement [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ) always clobbers reg byte y +Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a +Statement [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ) always clobbers reg byte y +Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a +Statement [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ) always clobbers reg byte y +Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a +Statement [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ) always clobbers reg byte y +Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x +Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a +Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a +Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y +Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a Statement asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } always clobbers reg byte a reg byte x reg byte y Statement asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } always clobbers reg byte a -Statement [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a -Statement [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a -Statement [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a -Statement [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a -Statement [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a -Statement [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a -Statement [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a -Statement [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a -Statement [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a -Statement [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a -Statement [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a -Statement [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a -Statement [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a -Statement [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a -Statement [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a -Statement [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a -Statement [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a -Statement [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a -Statement [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a -Statement [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a -Statement [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a -Statement [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a -Statement [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a -Statement [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a -Statement [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a -Statement [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a -Statement [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a -Statement [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a -Statement [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a -Statement [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a -Statement [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a -Statement [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [218] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [221] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a -Statement [224] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y -Statement [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a -Statement [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a -Statement [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a -Statement [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a -Statement [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a -Statement [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a -Statement [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a -Statement [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a -Statement [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a -Statement [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a -Statement [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a -Statement [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:11::debug_print_init:17 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x -Statement [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:11::debug_print_init:17 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a -Statement [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:193 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:195 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:197 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:199 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:201 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:203 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:205 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:207 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:209 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:211 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:213 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:215 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:193 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:195 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:197 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:199 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:201 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:203 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:205 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:207 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:209 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:211 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:213 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:215 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y -Statement [261] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:11::debug_print_init:17::print_cls:191 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:11::debug_print_init:17::print_cls:191 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [265] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:11::sprites_init:14 [ ] ) always clobbers reg byte a -Statement [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a -Statement [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a +Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a +Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a +Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a +Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a +Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a +Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a +Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a +Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a +Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a +Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a +Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a +Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a +Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a +Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a +Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a +Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a +Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a +Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a +Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a +Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a +Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a +Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a +Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a +Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a +Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a +Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a +Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a +Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a +Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a +Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a +Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a +Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y +Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a +Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a +Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a +Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a +Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a +Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a +Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a +Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a +Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a +Statement [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a +Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a +Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x +Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a +Statement [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y +Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y +Statement [252] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::debug_print_init:8::print_cls:182 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::debug_print_init:8::print_cls:182 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [256] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a +Statement [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a +Statement [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ sx#10 sx#3 ] : zp ZP_BYTE:2 , Potential registers zp ZP_BYTE:3 [ sy#10 sy#3 ] : zp ZP_BYTE:3 , Potential registers zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] : zp ZP_BYTE:4 , @@ -7341,128 +7128,128 @@ Uplift Scope [print_byte_at] 4: zp ZP_BYTE:45 [ print_byte_at::$0 ] 2: zp ZP_BYT Uplift Scope [main] Uplift Scope [store_matrix] -Uplifting [print_sbyte_at] best 102756 combination reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] -Uplifting [debug_print_init] best 97956 combination reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] zp ZP_WORD:83 [ debug_print_init::$41 ] zp ZP_WORD:85 [ debug_print_init::$44 ] zp ZP_WORD:87 [ debug_print_init::$47 ] zp ZP_WORD:89 [ debug_print_init::$50 ] zp ZP_WORD:91 [ debug_print_init::$53 ] zp ZP_WORD:93 [ debug_print_init::$56 ] zp ZP_WORD:95 [ debug_print_init::$59 ] zp ZP_WORD:97 [ debug_print_init::$62 ] zp ZP_WORD:99 [ debug_print_init::$65 ] reg byte x [ debug_print_init::col#0 ] zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Uplifting [anim] best 96056 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$8 ] reg byte a [ anim::$10 ] reg byte x [ anim::i2#0 ] -Uplifting [debug_print] best 96038 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] reg byte x [ debug_print::print_sbyte_pos1_sb#0 ] reg byte x [ debug_print::print_sbyte_pos2_sb#0 ] reg byte x [ debug_print::print_sbyte_pos4_sb#0 ] zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] +Uplifting [print_sbyte_at] best 79716 combination reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] +Uplifting [debug_print_init] best 74916 combination reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] zp ZP_WORD:83 [ debug_print_init::$41 ] zp ZP_WORD:85 [ debug_print_init::$44 ] zp ZP_WORD:87 [ debug_print_init::$47 ] zp ZP_WORD:89 [ debug_print_init::$50 ] zp ZP_WORD:91 [ debug_print_init::$53 ] zp ZP_WORD:93 [ debug_print_init::$56 ] zp ZP_WORD:95 [ debug_print_init::$59 ] zp ZP_WORD:97 [ debug_print_init::$62 ] zp ZP_WORD:99 [ debug_print_init::$65 ] reg byte x [ debug_print_init::col#0 ] zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] +Uplifting [anim] best 73016 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$8 ] reg byte a [ anim::$10 ] reg byte x [ anim::i2#0 ] +Uplifting [debug_print] best 72998 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] reg byte x [ debug_print::print_sbyte_pos1_sb#0 ] reg byte x [ debug_print::print_sbyte_pos2_sb#0 ] reg byte x [ debug_print::print_sbyte_pos4_sb#0 ] zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] Limited combination testing to 100 combinations of 8388608 possible. -Uplifting [rotate_matrix] best 95737 combination reg byte x [ rotate_matrix::x#0 ] zp ZP_BYTE:26 [ rotate_matrix::y#0 ] zp ZP_BYTE:27 [ rotate_matrix::z#0 ] -Uplifting [print_str_at] best 95737 combination zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] -Uplifting [print_char_at] best 95724 combination zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplifting [] best 95724 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] zp ZP_BYTE:2 [ sx#10 sx#3 ] -Uplifting [print_cls] best 95724 combination zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [sprites_init] best 95574 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ] -Uplifting [print_byte_at] best 95561 combination reg byte y [ print_byte_at::$0 ] reg byte x [ print_byte_at::$2 ] reg byte x [ print_byte_at::b#0 ] zp ZP_WORD:43 [ print_byte_at::at#0 ] -Uplifting [main] best 95561 combination -Uplifting [store_matrix] best 95561 combination +Uplifting [rotate_matrix] best 72697 combination reg byte x [ rotate_matrix::x#0 ] zp ZP_BYTE:26 [ rotate_matrix::y#0 ] zp ZP_BYTE:27 [ rotate_matrix::z#0 ] +Uplifting [print_str_at] best 72697 combination zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] +Uplifting [print_char_at] best 72684 combination zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplifting [] best 72684 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] zp ZP_BYTE:2 [ sx#10 sx#3 ] +Uplifting [print_cls] best 72684 combination zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [sprites_init] best 72534 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ] +Uplifting [print_byte_at] best 72521 combination reg byte y [ print_byte_at::$0 ] reg byte x [ print_byte_at::$2 ] reg byte x [ print_byte_at::b#0 ] zp ZP_WORD:43 [ print_byte_at::at#0 ] +Uplifting [main] best 72521 combination +Uplifting [store_matrix] best 72521 combination Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] -Uplifting [anim] best 95561 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] +Uplifting [anim] best 72521 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] -Uplifting [debug_print] best 95561 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] +Uplifting [debug_print] best 72521 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] -Uplifting [debug_print] best 95561 combination zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] +Uplifting [debug_print] best 72521 combination zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] -Uplifting [debug_print_init] best 95561 combination zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] +Uplifting [debug_print_init] best 72521 combination zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ rotate_matrix::y#0 ] -Uplifting [rotate_matrix] best 95561 combination zp ZP_BYTE:26 [ rotate_matrix::y#0 ] +Uplifting [rotate_matrix] best 72521 combination zp ZP_BYTE:26 [ rotate_matrix::y#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ rotate_matrix::z#0 ] -Uplifting [rotate_matrix] best 95561 combination zp ZP_BYTE:27 [ rotate_matrix::z#0 ] +Uplifting [rotate_matrix] best 72521 combination zp ZP_BYTE:27 [ rotate_matrix::z#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sy#10 sy#3 ] -Uplifting [] best 95561 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] +Uplifting [] best 72521 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] -Uplifting [debug_print_init] best 95561 combination zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] +Uplifting [debug_print_init] best 72521 combination zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ sx#10 sx#3 ] -Uplifting [] best 95561 combination zp ZP_BYTE:2 [ sx#10 sx#3 ] +Uplifting [] best 72521 combination zp ZP_BYTE:2 [ sx#10 sx#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] -Uplifting [debug_print] best 95555 combination reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] +Uplifting [debug_print] best 72515 combination reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] -Uplifting [debug_print] best 95549 combination reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] +Uplifting [debug_print] best 72509 combination reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] -Uplifting [debug_print] best 95543 combination reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] +Uplifting [debug_print] best 72503 combination reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] -Uplifting [debug_print] best 95537 combination reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] +Uplifting [debug_print] best 72497 combination reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] -Uplifting [debug_print] best 95531 combination reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] +Uplifting [debug_print] best 72491 combination reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] -Uplifting [debug_print] best 95525 combination reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] +Uplifting [debug_print] best 72485 combination reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] -Uplifting [debug_print] best 95519 combination reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] +Uplifting [debug_print] best 72479 combination reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] -Uplifting [debug_print] best 95513 combination reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] +Uplifting [debug_print] best 72473 combination reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:57 [ calculate_matrix::$10 ] -Uplifting [calculate_matrix] best 95507 combination reg byte a [ calculate_matrix::$10 ] +Uplifting [calculate_matrix] best 72467 combination reg byte a [ calculate_matrix::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:58 [ calculate_matrix::$11 ] -Uplifting [calculate_matrix] best 95501 combination reg byte a [ calculate_matrix::$11 ] +Uplifting [calculate_matrix] best 72461 combination reg byte a [ calculate_matrix::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:59 [ calculate_matrix::$12 ] -Uplifting [calculate_matrix] best 95495 combination reg byte a [ calculate_matrix::$12 ] +Uplifting [calculate_matrix] best 72455 combination reg byte a [ calculate_matrix::$12 ] Attempting to uplift remaining variables inzp ZP_BYTE:60 [ calculate_matrix::$13 ] -Uplifting [calculate_matrix] best 95489 combination reg byte a [ calculate_matrix::$13 ] +Uplifting [calculate_matrix] best 72449 combination reg byte a [ calculate_matrix::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ calculate_matrix::$14 ] -Uplifting [calculate_matrix] best 95483 combination reg byte a [ calculate_matrix::$14 ] +Uplifting [calculate_matrix] best 72443 combination reg byte a [ calculate_matrix::$14 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ calculate_matrix::$15 ] -Uplifting [calculate_matrix] best 95477 combination reg byte a [ calculate_matrix::$15 ] +Uplifting [calculate_matrix] best 72437 combination reg byte a [ calculate_matrix::$15 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ calculate_matrix::$16 ] -Uplifting [calculate_matrix] best 95471 combination reg byte a [ calculate_matrix::$16 ] +Uplifting [calculate_matrix] best 72431 combination reg byte a [ calculate_matrix::$16 ] Attempting to uplift remaining variables inzp ZP_BYTE:64 [ calculate_matrix::$17 ] -Uplifting [calculate_matrix] best 95465 combination reg byte a [ calculate_matrix::$17 ] +Uplifting [calculate_matrix] best 72425 combination reg byte a [ calculate_matrix::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:65 [ calculate_matrix::$18 ] -Uplifting [calculate_matrix] best 95459 combination reg byte a [ calculate_matrix::$18 ] +Uplifting [calculate_matrix] best 72419 combination reg byte a [ calculate_matrix::$18 ] Attempting to uplift remaining variables inzp ZP_BYTE:66 [ calculate_matrix::$19 ] -Uplifting [calculate_matrix] best 95453 combination reg byte a [ calculate_matrix::$19 ] +Uplifting [calculate_matrix] best 72413 combination reg byte a [ calculate_matrix::$19 ] Attempting to uplift remaining variables inzp ZP_BYTE:67 [ calculate_matrix::$20 ] -Uplifting [calculate_matrix] best 95447 combination reg byte a [ calculate_matrix::$20 ] +Uplifting [calculate_matrix] best 72407 combination reg byte a [ calculate_matrix::$20 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ calculate_matrix::$21 ] -Uplifting [calculate_matrix] best 95441 combination reg byte a [ calculate_matrix::$21 ] +Uplifting [calculate_matrix] best 72401 combination reg byte a [ calculate_matrix::$21 ] Attempting to uplift remaining variables inzp ZP_BYTE:69 [ calculate_matrix::$22 ] -Uplifting [calculate_matrix] best 95435 combination reg byte a [ calculate_matrix::$22 ] +Uplifting [calculate_matrix] best 72395 combination reg byte a [ calculate_matrix::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ calculate_matrix::$23 ] -Uplifting [calculate_matrix] best 95429 combination reg byte a [ calculate_matrix::$23 ] +Uplifting [calculate_matrix] best 72389 combination reg byte a [ calculate_matrix::$23 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ calculate_matrix::$24 ] -Uplifting [calculate_matrix] best 95423 combination reg byte a [ calculate_matrix::$24 ] +Uplifting [calculate_matrix] best 72383 combination reg byte a [ calculate_matrix::$24 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ calculate_matrix::$25 ] -Uplifting [calculate_matrix] best 95417 combination reg byte a [ calculate_matrix::$25 ] +Uplifting [calculate_matrix] best 72377 combination reg byte a [ calculate_matrix::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ calculate_matrix::$26 ] -Uplifting [calculate_matrix] best 95411 combination reg byte a [ calculate_matrix::$26 ] +Uplifting [calculate_matrix] best 72371 combination reg byte a [ calculate_matrix::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ calculate_matrix::$27 ] -Uplifting [calculate_matrix] best 95405 combination reg byte a [ calculate_matrix::$27 ] +Uplifting [calculate_matrix] best 72365 combination reg byte a [ calculate_matrix::$27 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ calculate_matrix::$28 ] -Uplifting [calculate_matrix] best 95399 combination reg byte a [ calculate_matrix::$28 ] +Uplifting [calculate_matrix] best 72359 combination reg byte a [ calculate_matrix::$28 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ calculate_matrix::$29 ] -Uplifting [calculate_matrix] best 95393 combination reg byte a [ calculate_matrix::$29 ] +Uplifting [calculate_matrix] best 72353 combination reg byte a [ calculate_matrix::$29 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ calculate_matrix::$30 ] -Uplifting [calculate_matrix] best 95387 combination reg byte a [ calculate_matrix::$30 ] +Uplifting [calculate_matrix] best 72347 combination reg byte a [ calculate_matrix::$30 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ calculate_matrix::$31 ] -Uplifting [calculate_matrix] best 95381 combination reg byte a [ calculate_matrix::$31 ] +Uplifting [calculate_matrix] best 72341 combination reg byte a [ calculate_matrix::$31 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ calculate_matrix::$32 ] -Uplifting [calculate_matrix] best 95375 combination reg byte a [ calculate_matrix::$32 ] +Uplifting [calculate_matrix] best 72335 combination reg byte a [ calculate_matrix::$32 ] Attempting to uplift remaining variables inzp ZP_BYTE:80 [ calculate_matrix::$33 ] -Uplifting [calculate_matrix] best 95369 combination reg byte a [ calculate_matrix::$33 ] +Uplifting [calculate_matrix] best 72329 combination reg byte a [ calculate_matrix::$33 ] Attempting to uplift remaining variables inzp ZP_BYTE:81 [ calculate_matrix::$34 ] -Uplifting [calculate_matrix] best 95363 combination reg byte a [ calculate_matrix::$34 ] +Uplifting [calculate_matrix] best 72323 combination reg byte a [ calculate_matrix::$34 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ calculate_matrix::sx#0 ] -Uplifting [calculate_matrix] best 95325 combination reg byte x [ calculate_matrix::sx#0 ] +Uplifting [calculate_matrix] best 72285 combination reg byte x [ calculate_matrix::sx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ calculate_matrix::sy#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ calculate_matrix::t2#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:48 [ calculate_matrix::t2#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:48 [ calculate_matrix::t2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ calculate_matrix::t1#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:47 [ calculate_matrix::t1#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:47 [ calculate_matrix::t1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:52 [ calculate_matrix::t6#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:52 [ calculate_matrix::t6#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:52 [ calculate_matrix::t6#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ calculate_matrix::t4#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:50 [ calculate_matrix::t4#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:50 [ calculate_matrix::t4#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ calculate_matrix::t7#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:53 [ calculate_matrix::t7#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:53 [ calculate_matrix::t7#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ calculate_matrix::t8#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:54 [ calculate_matrix::t8#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:54 [ calculate_matrix::t8#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ calculate_matrix::t3#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:49 [ calculate_matrix::t3#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:49 [ calculate_matrix::t3#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ calculate_matrix::t5#0 ] -Uplifting [calculate_matrix] best 95325 combination zp ZP_BYTE:51 [ calculate_matrix::t5#0 ] +Uplifting [calculate_matrix] best 72285 combination zp ZP_BYTE:51 [ calculate_matrix::t5#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:56 [ calculate_matrix::t10#0 ] -Uplifting [calculate_matrix] best 95318 combination reg byte x [ calculate_matrix::t10#0 ] +Uplifting [calculate_matrix] best 72278 combination reg byte x [ calculate_matrix::t10#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:55 [ calculate_matrix::t9#0 ] -Uplifting [calculate_matrix] best 95318 combination zp ZP_BYTE:55 [ calculate_matrix::t9#0 ] +Uplifting [calculate_matrix] best 72278 combination zp ZP_BYTE:55 [ calculate_matrix::t9#0 ] Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] ] with [ zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ sy#10 sy#3 ] ] with [ zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] with [ zp ZP_WORD:43 [ print_byte_at::at#0 ] ] - score: 1 @@ -7526,33 +7313,8 @@ ASSEMBLER BEFORE OPTIMIZATION .label psp2 = $f8 .label SCREEN = $400 .const sz = 0 - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2400 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2600 // A single sprite .label SPRITE = $3000 - // Perspective multiplication table containing (d/(z0-z)[z] for each z-value - .label PERSP_Z = $2800 - // Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$20;20] - .label SINH = $2000 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$10,$10] - .label SINQ = $2200 - // 16 bit Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$1f,$1f] - .label SINH_LO = $4000 - // sin(x) = cos(x+PI/2) - .label SINH_HI = $4200 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$0f,$0f] - .label SINQ_LO = $4400 - // sin(x) = cos(x+PI/2) - .label SINQ_HI = $4600 .label COSH = SINH+$40 .label COSQ = SINQ+$40 .label sx = 2 @@ -7562,225 +7324,214 @@ bbegin: jmp b1 //SEG4 @1 b1: -//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} -//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} -//SEG7 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }} -//SEG9 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -// sin(x) = cos(x+PI/2) -//SEG10 kickasm(location (const signed byte*) SINQ#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -// sin(x) = cos(x+PI/2) -//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG13 kickasm(location (const byte*) SINQ_LO#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG14 kickasm(location (const byte*) SINQ_HI#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG15 [11] call main +//SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} +//SEG6 [2] call main jsr main -//SEG16 [12] phi from @1 to @end [phi:@1->@end] +//SEG7 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG17 @end +//SEG8 @end bend: -//SEG18 main +//SEG9 main main: { - //SEG19 asm { sei } + //SEG10 asm { sei } sei - //SEG20 [14] call sprites_init + //SEG11 [5] call sprites_init jsr sprites_init jmp b1 - //SEG21 main::@1 + //SEG12 main::@1 b1: - //SEG22 [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG13 [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 //mulf_init(); lda #mulf_sqr1 sta psp1+1 - //SEG23 [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG14 [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG24 [17] call debug_print_init - //SEG25 [190] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] + //SEG15 [8] call debug_print_init + //SEG16 [181] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] debug_print_init_from_b1: jsr debug_print_init - //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG27 main::@2 + //SEG18 main::@2 b2: - //SEG28 [19] call anim - //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim] + //SEG19 [10] call anim + //SEG20 [12] phi from main::@2 to anim [phi:main::@2->anim] anim_from_b2: jsr anim jmp breturn - //SEG30 main::@return + //SEG21 main::@return breturn: - //SEG31 [20] return + //SEG22 [11] return rts } -//SEG32 anim +//SEG23 anim anim: { .label i = 4 - //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG24 [13] phi from anim to anim::@1 [phi:anim->anim::@1] b1_from_anim: - //SEG34 [22] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 + //SEG25 [13] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 lda #0 sta sy - //SEG35 [22] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 + //SEG26 [13] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 lda #0 sta sx jmp b1 //signed byte xmin = 0; //signed byte xmax = 0; - //SEG36 anim::@1 + //SEG27 anim::@1 b1: jmp b2 - //SEG37 anim::@2 + //SEG28 anim::@2 b2: - //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG29 [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 jmp b3 - //SEG39 anim::@3 + //SEG30 anim::@3 b3: - //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG31 [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$fe cmp RASTER bne b3 jmp b4 - //SEG41 anim::@4 + //SEG32 anim::@4 b4: - //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG33 [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$fd cmp RASTER bne b4 jmp b5 - //SEG43 anim::@5 + //SEG34 anim::@5 b5: - //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG35 [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG36 [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx - //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 - //SEG47 [29] call calculate_matrix + //SEG37 [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 + //SEG38 [20] call calculate_matrix jsr calculate_matrix - //SEG48 [30] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8] + //SEG39 [21] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8] b8_from_b5: jmp b8 - //SEG49 anim::@8 + //SEG40 anim::@8 b8: - //SEG50 [31] call store_matrix + //SEG41 [22] call store_matrix jsr store_matrix - //SEG51 [32] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6] + //SEG42 [23] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6] b6_from_b8: - //SEG52 [32] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 + //SEG43 [23] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 lda #0 sta i jmp b6 - //SEG53 [32] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6] + //SEG44 [23] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6] b6_from_b9: - //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy + //SEG45 [23] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy jmp b6 - //SEG55 anim::@6 + //SEG46 anim::@6 b6: - //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG47 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG48 [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xs,y - //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG49 [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda ys,y sta rotate_matrix.y - //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG50 [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda zs,y sta rotate_matrix.z - //SEG60 [37] call rotate_matrix + //SEG51 [28] call rotate_matrix jsr rotate_matrix jmp b9 - //SEG61 anim::@9 + //SEG52 anim::@9 b9: - //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG53 [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 //if(*xrxmax) xmax = *xr; ldy i lda xr sta xrs,y - //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG54 [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yr sta yrs,y - //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG55 [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda zr sta zrs,y - //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG56 [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda pp sta pps,y - //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG57 [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda xp sta xps,y - //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG58 [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 ldy i lda yp sta yps,y - //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG59 [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 lda i asl tax - //SEG69 [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG60 [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc xp - //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG61 [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG71 [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG62 [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc yp - //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG63 [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_YPOS,x - //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 + //SEG64 [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG74 [50] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG65 [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b6_from_b9 jmp b7 - //SEG75 anim::@7 + //SEG66 anim::@7 b7: - //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG67 [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_GREY sta BORDERCOL - //SEG77 [52] call debug_print + //SEG68 [43] call debug_print jsr debug_print jmp b10 - //SEG78 anim::@10 + //SEG69 anim::@10 b10: - //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG70 [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 + //SEG71 [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 // Increment angles inc sx inc sx - //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 + //SEG72 [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 lax sy axs #3 stx sy - //SEG82 [22] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1] + //SEG73 [13] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1] b1_from_b10: - //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy - //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy + //SEG74 [13] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy + //SEG75 [13] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy jmp b1 } -//SEG85 debug_print +//SEG76 debug_print debug_print: { .const print_sbyte_pos1_col = $25 .const print_sbyte_pos2_row = 1 @@ -7808,245 +7559,245 @@ debug_print: { .label at_line = SCREEN+$13*$28 .label c = 5 .label i = 6 - //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG77 [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx jmp print_sbyte_pos1 - //SEG87 debug_print::print_sbyte_pos1 + //SEG78 debug_print::print_sbyte_pos1 print_sbyte_pos1: - //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 - //SEG89 [58] call print_sbyte_at - //SEG90 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] + //SEG79 [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + //SEG80 [49] call print_sbyte_at + //SEG81 [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos1: - //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG82 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos1_col sta print_sbyte_at.at+1 - //SEG92 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy + //SEG83 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b2 - //SEG93 debug_print::@2 + //SEG84 debug_print::@2 b2: - //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 + //SEG85 [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 ldx sy jmp print_sbyte_pos2 - //SEG95 debug_print::print_sbyte_pos2 + //SEG86 debug_print::print_sbyte_pos2 print_sbyte_pos2: - //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 - //SEG97 [61] call print_sbyte_at - //SEG98 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] + //SEG87 [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 + //SEG88 [52] call print_sbyte_at + //SEG89 [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos2: - //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG90 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col sta print_sbyte_at.at+1 - //SEG100 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy + //SEG91 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG101 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] + //SEG92 [53] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] print_sbyte_pos3_from_print_sbyte_pos2: jmp print_sbyte_pos3 - //SEG102 debug_print::print_sbyte_pos3 + //SEG93 debug_print::print_sbyte_pos3 print_sbyte_pos3: - //SEG103 [63] call print_sbyte_at - //SEG104 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] + //SEG94 [54] call print_sbyte_at + //SEG95 [105] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos3: - //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG96 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta print_sbyte_at.at+1 - //SEG106 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 + //SEG97 [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 ldx #sz jsr print_sbyte_at jmp b3 - //SEG107 debug_print::@3 + //SEG98 debug_print::@3 b3: - //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsxx=_deref_pbsc1 + //SEG99 [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsxx=_deref_pbsc1 ldx rotation_matrix jmp print_sbyte_pos4 - //SEG109 debug_print::print_sbyte_pos4 + //SEG100 debug_print::print_sbyte_pos4 print_sbyte_pos4: - //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 - //SEG111 [66] call print_sbyte_at - //SEG112 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] + //SEG101 [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 + //SEG102 [57] call print_sbyte_at + //SEG103 [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos4: - //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG104 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta print_sbyte_at.at+1 - //SEG114 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy + //SEG105 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b4 - //SEG115 debug_print::@4 + //SEG106 debug_print::@4 b4: - //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsxx=_deref_pbsc1 + //SEG107 [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+1 jmp print_sbyte_pos5 - //SEG117 debug_print::print_sbyte_pos5 + //SEG108 debug_print::print_sbyte_pos5 print_sbyte_pos5: - //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 - //SEG119 [69] call print_sbyte_at - //SEG120 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] + //SEG109 [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + //SEG110 [60] call print_sbyte_at + //SEG111 [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos5: - //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG112 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta print_sbyte_at.at+1 - //SEG122 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy + //SEG113 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b5 - //SEG123 debug_print::@5 + //SEG114 debug_print::@5 b5: - //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsxx=_deref_pbsc1 + //SEG115 [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+2 jmp print_sbyte_pos6 - //SEG125 debug_print::print_sbyte_pos6 + //SEG116 debug_print::print_sbyte_pos6 print_sbyte_pos6: - //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 - //SEG127 [72] call print_sbyte_at - //SEG128 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] + //SEG117 [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + //SEG118 [63] call print_sbyte_at + //SEG119 [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos6: - //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG120 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta print_sbyte_at.at+1 - //SEG130 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy + //SEG121 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b6 - //SEG131 debug_print::@6 + //SEG122 debug_print::@6 b6: - //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsxx=_deref_pbsc1 + //SEG123 [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+3 jmp print_sbyte_pos7 - //SEG133 debug_print::print_sbyte_pos7 + //SEG124 debug_print::print_sbyte_pos7 print_sbyte_pos7: - //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 - //SEG135 [75] call print_sbyte_at - //SEG136 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] + //SEG125 [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + //SEG126 [66] call print_sbyte_at + //SEG127 [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos7: - //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG128 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta print_sbyte_at.at+1 - //SEG138 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy + //SEG129 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b7 - //SEG139 debug_print::@7 + //SEG130 debug_print::@7 b7: - //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsxx=_deref_pbsc1 + //SEG131 [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+4 jmp print_sbyte_pos8 - //SEG141 debug_print::print_sbyte_pos8 + //SEG132 debug_print::print_sbyte_pos8 print_sbyte_pos8: - //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 - //SEG143 [78] call print_sbyte_at - //SEG144 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] + //SEG133 [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + //SEG134 [69] call print_sbyte_at + //SEG135 [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos8: - //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG136 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta print_sbyte_at.at+1 - //SEG146 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy + //SEG137 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b8 - //SEG147 debug_print::@8 + //SEG138 debug_print::@8 b8: - //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsxx=_deref_pbsc1 + //SEG139 [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+5 jmp print_sbyte_pos9 - //SEG149 debug_print::print_sbyte_pos9 + //SEG140 debug_print::print_sbyte_pos9 print_sbyte_pos9: - //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 - //SEG151 [81] call print_sbyte_at - //SEG152 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] + //SEG141 [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + //SEG142 [72] call print_sbyte_at + //SEG143 [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos9: - //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG144 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta print_sbyte_at.at+1 - //SEG154 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy + //SEG145 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b9 - //SEG155 debug_print::@9 + //SEG146 debug_print::@9 b9: - //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsxx=_deref_pbsc1 + //SEG147 [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+6 jmp print_sbyte_pos10 - //SEG157 debug_print::print_sbyte_pos10 + //SEG148 debug_print::print_sbyte_pos10 print_sbyte_pos10: - //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 - //SEG159 [84] call print_sbyte_at - //SEG160 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] + //SEG149 [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + //SEG150 [75] call print_sbyte_at + //SEG151 [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos10: - //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG152 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta print_sbyte_at.at+1 - //SEG162 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy + //SEG153 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b10 - //SEG163 debug_print::@10 + //SEG154 debug_print::@10 b10: - //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsxx=_deref_pbsc1 + //SEG155 [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+7 jmp print_sbyte_pos11 - //SEG165 debug_print::print_sbyte_pos11 + //SEG156 debug_print::print_sbyte_pos11 print_sbyte_pos11: - //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 - //SEG167 [87] call print_sbyte_at - //SEG168 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] + //SEG157 [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + //SEG158 [78] call print_sbyte_at + //SEG159 [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos11: - //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG160 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta print_sbyte_at.at+1 - //SEG170 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy + //SEG161 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b11 - //SEG171 debug_print::@11 + //SEG162 debug_print::@11 b11: - //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsxx=_deref_pbsc1 + //SEG163 [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+8 jmp print_sbyte_pos12 - //SEG173 debug_print::print_sbyte_pos12 + //SEG164 debug_print::print_sbyte_pos12 print_sbyte_pos12: - //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 - //SEG175 [90] call print_sbyte_at - //SEG176 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] + //SEG165 [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + //SEG166 [81] call print_sbyte_at + //SEG167 [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos12: - //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG168 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col sta print_sbyte_at.at+1 - //SEG178 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy + //SEG169 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG179 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] + //SEG170 [82] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] b1_from_print_sbyte_pos12: - //SEG180 [91] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 + //SEG171 [82] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG181 [91] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 + //SEG172 [82] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG182 [91] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1] + //SEG173 [82] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1] b1_from_b17: - //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy - //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy + //SEG174 [82] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy + //SEG175 [82] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy jmp b1 - //SEG185 debug_print::@1 + //SEG176 debug_print::@1 b1: - //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG177 [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG178 [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xrs,y - //SEG188 [94] call print_sbyte_at - //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] + //SEG179 [85] call print_sbyte_at + //SEG180 [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy - //SEG191 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy + //SEG181 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy + //SEG182 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b12 - //SEG192 debug_print::@12 + //SEG183 debug_print::@12 b12: - //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG184 [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG185 [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx yrs,y - //SEG195 [97] call print_sbyte_at - //SEG196 [114] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] + //SEG186 [88] call print_sbyte_at + //SEG187 [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] print_sbyte_at_from_b12: - //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy - //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy + //SEG188 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy + //SEG189 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b13 - //SEG199 debug_print::@13 + //SEG190 debug_print::@13 b13: - //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG191 [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG192 [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx zrs,y - //SEG202 [100] call print_sbyte_at - //SEG203 [114] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] + //SEG193 [91] call print_sbyte_at + //SEG194 [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] print_sbyte_at_from_b13: - //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy - //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy + //SEG195 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy + //SEG196 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b14 - //SEG206 debug_print::@14 + //SEG197 debug_print::@14 b14: - //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG198 [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*3 adc #0 sta print_sbyte_at.at+1 - //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG199 [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx pps,y - //SEG209 [103] call print_sbyte_at - //SEG210 [114] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] + //SEG200 [94] call print_sbyte_at + //SEG201 [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] print_sbyte_at_from_b14: - //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy - //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy + //SEG202 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy + //SEG203 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b15 - //SEG213 debug_print::@15 + //SEG204 debug_print::@15 b15: - //SEG214 [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG205 [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*4 adc #0 sta print_sbyte_at.at+1 - //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG206 [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xps,y - //SEG216 [106] call print_sbyte_at - //SEG217 [114] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] + //SEG207 [97] call print_sbyte_at + //SEG208 [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] print_sbyte_at_from_b15: - //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy - //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy + //SEG209 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy + //SEG210 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b16 - //SEG220 debug_print::@16 + //SEG211 debug_print::@16 b16: - //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG212 [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*5 adc #0 sta print_sbyte_at.at+1 - //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG213 [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx yps,y - //SEG223 [109] call print_sbyte_at - //SEG224 [114] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] + //SEG214 [100] call print_sbyte_at + //SEG215 [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] print_sbyte_at_from_b16: - //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy - //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy + //SEG216 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy + //SEG217 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b17 - //SEG227 debug_print::@17 + //SEG218 debug_print::@17 b17: - //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG219 [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c axs #-[4] stx c - //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 + //SEG220 [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG230 [112] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG221 [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b17 jmp breturn - //SEG231 debug_print::@return + //SEG222 debug_print::@return breturn: - //SEG232 [113] return + //SEG223 [104] return rts } -//SEG233 print_sbyte_at +//SEG224 print_sbyte_at // Print a signed byte as hex at a specific screen position // print_sbyte_at(signed byte register(X) b, byte* zeropage(7) at) print_sbyte_at: { .label at = 7 - //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 + //SEG225 [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 jmp b3 - //SEG235 print_sbyte_at::@3 + //SEG226 print_sbyte_at::@3 b3: - //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 - //SEG237 [117] call print_char_at - //SEG238 [126] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG227 [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 + //SEG228 [108] call print_char_at + //SEG229 [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG239 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG240 [126] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 + //SEG230 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG231 [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 ldy #' ' jsr print_char_at - //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] + //SEG232 [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] b2_from_b3: b2_from_b4: - //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy + //SEG233 [109] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG243 print_sbyte_at::@2 + //SEG234 print_sbyte_at::@2 b2: - //SEG244 [119] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 - //SEG245 [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG235 [110] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 + //SEG236 [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG246 [121] call print_byte_at + //SEG237 [112] call print_byte_at jsr print_byte_at jmp breturn - //SEG247 print_sbyte_at::@return + //SEG238 print_sbyte_at::@return breturn: - //SEG248 [122] return + //SEG239 [113] return rts - //SEG249 print_sbyte_at::@1 + //SEG240 print_sbyte_at::@1 b1: - //SEG250 [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 - //SEG251 [124] call print_char_at - //SEG252 [126] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG241 [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 + //SEG242 [115] call print_char_at + //SEG243 [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG253 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG254 [126] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 + //SEG244 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG245 [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 ldy #'-' jsr print_char_at jmp b4 - //SEG255 print_sbyte_at::@4 + //SEG246 print_sbyte_at::@4 b4: - //SEG256 [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx + //SEG247 [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -8242,69 +7993,69 @@ print_sbyte_at: { tax jmp b2_from_b4 } -//SEG257 print_char_at +//SEG248 print_char_at // Print a single char // print_char_at(byte register(Y) ch, byte* zeropage(7) at) print_char_at: { .label at = 7 - //SEG258 [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy + //SEG249 [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy tya ldy #0 sta (at),y jmp breturn - //SEG259 print_char_at::@return + //SEG250 print_char_at::@return breturn: - //SEG260 [128] return + //SEG251 [119] return rts } -//SEG261 print_byte_at +//SEG252 print_byte_at // Print a byte as HEX at a specific position // print_byte_at(byte register(X) b, byte* zeropage(7) at) print_byte_at: { .label at = 7 - //SEG262 [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 + //SEG253 [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 txa lsr lsr lsr lsr tay - //SEG263 [130] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy + //SEG254 [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy lda print_hextab,y tay - //SEG264 [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG265 [132] call print_char_at - //SEG266 [126] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG255 [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG256 [123] call print_char_at + //SEG257 [117] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG267 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG268 [126] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG258 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG259 [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG269 print_byte_at::@1 + //SEG260 print_byte_at::@1 b1: - //SEG270 [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + //SEG261 [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG271 [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG262 [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG272 [135] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG263 [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx ldy print_hextab,x - //SEG273 [136] call print_char_at - //SEG274 [126] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG264 [127] call print_char_at + //SEG265 [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG275 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG276 [126] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG266 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG267 [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG277 print_byte_at::@return + //SEG268 print_byte_at::@return breturn: - //SEG278 [137] return + //SEG269 [128] return rts } -//SEG279 rotate_matrix +//SEG270 rotate_matrix // Rotate a 3D point (x,y,z) using the rotation matrix // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. @@ -8313,16 +8064,16 @@ print_byte_at: { rotate_matrix: { .label y = $11 .label z = $12 - //SEG280 [138] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx + //SEG271 [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx txa sta xr - //SEG281 [139] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 + //SEG272 [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 lda y sta yr - //SEG282 [140] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 + //SEG273 [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 lda z sta zr - //SEG283 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } + //SEG274 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } ldx zr C1: lda mulf_sqr1,x @@ -8410,17 +8161,17 @@ rotate_matrix: { sbc (psp2),y sta xp jmp breturn - //SEG284 rotate_matrix::@return + //SEG275 rotate_matrix::@return breturn: - //SEG285 [142] return + //SEG276 [133] return rts } -//SEG286 store_matrix +//SEG277 store_matrix // Store the rotation matrix into the rotation routine rotate() // After this each call to rotate() will rotate a point with the matrix // Implemented in assembler to utilize seriously fast multiplication store_matrix: { - //SEG287 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } + //SEG278 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } lda rotation_matrix+0 sta rotate_matrix.A1+1 eor #$ff @@ -8458,12 +8209,12 @@ store_matrix: { eor #$ff sta rotate_matrix.I2+1 jmp breturn - //SEG288 store_matrix::@return + //SEG279 store_matrix::@return breturn: - //SEG289 [144] return + //SEG280 [135] return rts } -//SEG290 calculate_matrix +//SEG281 calculate_matrix // Prepare the 3x3 rotation matrix into rotation_matrix[] // Angles sx, sy, sz are based on 2*PI=$100 // Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt @@ -8479,188 +8230,188 @@ calculate_matrix: { .label t7 = $19 .label t8 = $1a .label t9 = $1b - //SEG291 [145] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 + //SEG282 [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 lda sy sta t1 - //SEG292 [146] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 + //SEG283 [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 lda sy sta t2 - //SEG293 [147] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx + //SEG284 [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx stx t3 - //SEG294 [148] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx + //SEG285 [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx stx t4 - //SEG295 [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsz2 + //SEG286 [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsz2 txa clc adc t2 sta t5 - //SEG296 [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 + //SEG287 [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 txa sec sbc t1 sta t6 - //SEG297 [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 + //SEG288 [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 txa clc adc t1 sta t7 - //SEG298 [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx + //SEG289 [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx txa eor #$ff sec adc t2 sta t8 - //SEG299 [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx + //SEG290 [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx txa eor #$ff sec adc sy sta t9 - //SEG300 [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsxx=vbsz1_plus_vbsxx + //SEG291 [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsxx=vbsz1_plus_vbsxx txa clc adc sy tax - //SEG301 [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG292 [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldy t1 lda COSH,y ldy t2 clc adc COSH,y - //SEG302 [156] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa + //SEG293 [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa sta rotation_matrix - //SEG303 [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG294 [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldy t1 lda SINH,y ldy t2 sec sbc SINH,y - //SEG304 [158] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa + //SEG295 [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa sta rotation_matrix+1 - //SEG305 [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 + //SEG296 [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 ldy sy clc lda SINH,y adc SINH,y - //SEG306 [160] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa + //SEG297 [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa sta rotation_matrix+2 - //SEG307 [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG298 [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldy t3 lda SINH,y ldy t4 sec sbc SINH,y - //SEG308 [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG299 [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG309 [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG300 [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG310 [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG301 [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t8 clc adc COSQ,y - //SEG311 [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG302 [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc COSQ,y - //SEG312 [166] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa + //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa sta rotation_matrix+3 - //SEG313 [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG304 [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldy t3 lda COSH,y ldy t4 clc adc COSH,y - //SEG314 [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG305 [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t5 clc adc SINQ,y - //SEG315 [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG306 [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t6 sec sbc SINQ,y - //SEG316 [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG307 [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG317 [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG308 [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG318 [172] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa + //SEG309 [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa sta rotation_matrix+4 - //SEG319 [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsxx + //SEG310 [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsxx ldy t9 lda SINH,y sec sbc SINH,x - //SEG320 [174] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa + //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa sta rotation_matrix+5 - //SEG321 [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG312 [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldy t4 lda COSH,y ldy t3 sec sbc COSH,y - //SEG322 [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG313 [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc SINQ,y - //SEG323 [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG314 [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc SINQ,y - //SEG324 [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG315 [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG325 [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG316 [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG326 [180] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa + //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa sta rotation_matrix+6 - //SEG327 [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG318 [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldy t3 lda SINH,y ldy t4 clc adc SINH,y - //SEG328 [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG319 [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG329 [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG320 [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG330 [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG321 [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t7 clc adc COSQ,y - //SEG331 [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG322 [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc COSQ,y - //SEG332 [186] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa + //SEG323 [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa sta rotation_matrix+7 - //SEG333 [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsxx + //SEG324 [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsxx lda COSH,x ldy t9 clc adc COSH,y - //SEG334 [188] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa + //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa sta rotation_matrix+8 jmp breturn - //SEG335 calculate_matrix::@return + //SEG326 calculate_matrix::@return breturn: - //SEG336 [189] return + //SEG327 [180] return rts } -//SEG337 debug_print_init +//SEG328 debug_print_init debug_print_init: { .label COLS = $d800 .label at_line = SCREEN+$10*$28 @@ -8676,255 +8427,255 @@ debug_print_init: { .label _65 = $2c .label c = 9 .label i = $a - //SEG338 [191] call print_cls - //SEG339 [259] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] + //SEG329 [182] call print_cls + //SEG330 [250] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] print_cls_from_debug_print_init: jsr print_cls - //SEG340 [192] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4] + //SEG331 [183] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4] b4_from_debug_print_init: jmp b4 - //SEG341 debug_print_init::@4 + //SEG332 debug_print_init::@4 b4: - //SEG342 [193] call print_str_at - //SEG343 [252] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at] + //SEG333 [184] call print_str_at + //SEG334 [243] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at] print_str_at_from_b4: - //SEG344 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 + //SEG335 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$22 sta print_str_at.at+1 - //SEG345 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 + //SEG336 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG346 [194] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5] + //SEG337 [185] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5] b5_from_b4: jmp b5 - //SEG347 debug_print_init::@5 + //SEG338 debug_print_init::@5 b5: - //SEG348 [195] call print_str_at - //SEG349 [252] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] + //SEG339 [186] call print_str_at + //SEG340 [243] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] print_str_at_from_b5: - //SEG350 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 + //SEG341 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*1+$22 sta print_str_at.at+1 - //SEG351 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 + //SEG342 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG352 [196] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] + //SEG343 [187] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] b6_from_b5: jmp b6 - //SEG353 debug_print_init::@6 + //SEG344 debug_print_init::@6 b6: - //SEG354 [197] call print_str_at - //SEG355 [252] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] + //SEG345 [188] call print_str_at + //SEG346 [243] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] print_str_at_from_b6: - //SEG356 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 + //SEG347 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*2+$22 sta print_str_at.at+1 - //SEG357 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 + //SEG348 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG358 [198] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] + //SEG349 [189] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] b7_from_b6: jmp b7 - //SEG359 debug_print_init::@7 + //SEG350 debug_print_init::@7 b7: - //SEG360 [199] call print_str_at - //SEG361 [252] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] + //SEG351 [190] call print_str_at + //SEG352 [243] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] print_str_at_from_b7: - //SEG362 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 + //SEG353 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$10 sta print_str_at.at+1 - //SEG363 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 + //SEG354 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG364 [200] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] + //SEG355 [191] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] b8_from_b7: jmp b8 - //SEG365 debug_print_init::@8 + //SEG356 debug_print_init::@8 b8: - //SEG366 [201] call print_str_at - //SEG367 [252] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] + //SEG357 [192] call print_str_at + //SEG358 [243] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] print_str_at_from_b8: - //SEG368 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 + //SEG359 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$11 sta print_str_at.at+1 - //SEG369 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 + //SEG360 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 lda #str4 sta print_str_at.str+1 jsr print_str_at - //SEG370 [202] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] + //SEG361 [193] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] b9_from_b8: jmp b9 - //SEG371 debug_print_init::@9 + //SEG362 debug_print_init::@9 b9: - //SEG372 [203] call print_str_at - //SEG373 [252] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] + //SEG363 [194] call print_str_at + //SEG364 [243] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] print_str_at_from_b9: - //SEG374 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 + //SEG365 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$12 sta print_str_at.at+1 - //SEG375 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 + //SEG366 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 lda #str5 sta print_str_at.str+1 jsr print_str_at - //SEG376 [204] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] + //SEG367 [195] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] b10_from_b9: jmp b10 - //SEG377 debug_print_init::@10 + //SEG368 debug_print_init::@10 b10: - //SEG378 [205] call print_str_at - //SEG379 [252] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] + //SEG369 [196] call print_str_at + //SEG370 [243] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] print_str_at_from_b10: - //SEG380 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 + //SEG371 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$13 sta print_str_at.at+1 - //SEG381 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 + //SEG372 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 lda #str6 sta print_str_at.str+1 jsr print_str_at - //SEG382 [206] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] + //SEG373 [197] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] b11_from_b10: jmp b11 - //SEG383 debug_print_init::@11 + //SEG374 debug_print_init::@11 b11: - //SEG384 [207] call print_str_at - //SEG385 [252] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] + //SEG375 [198] call print_str_at + //SEG376 [243] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] print_str_at_from_b11: - //SEG386 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 + //SEG377 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$14 sta print_str_at.at+1 - //SEG387 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 + //SEG378 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 lda #str7 sta print_str_at.str+1 jsr print_str_at - //SEG388 [208] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] + //SEG379 [199] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] b12_from_b11: jmp b12 - //SEG389 debug_print_init::@12 + //SEG380 debug_print_init::@12 b12: - //SEG390 [209] call print_str_at - //SEG391 [252] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] + //SEG381 [200] call print_str_at + //SEG382 [243] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] print_str_at_from_b12: - //SEG392 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 + //SEG383 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$15 sta print_str_at.at+1 - //SEG393 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 + //SEG384 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 lda #str8 sta print_str_at.str+1 jsr print_str_at - //SEG394 [210] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] + //SEG385 [201] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] b13_from_b12: jmp b13 - //SEG395 debug_print_init::@13 + //SEG386 debug_print_init::@13 b13: - //SEG396 [211] call print_str_at - //SEG397 [252] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] + //SEG387 [202] call print_str_at + //SEG388 [243] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] print_str_at_from_b13: - //SEG398 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG389 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$16 sta print_str_at.at+1 - //SEG399 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG390 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str9 sta print_str_at.str+1 jsr print_str_at - //SEG400 [212] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] + //SEG391 [203] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] b14_from_b13: jmp b14 - //SEG401 debug_print_init::@14 + //SEG392 debug_print_init::@14 b14: - //SEG402 [213] call print_str_at - //SEG403 [252] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] + //SEG393 [204] call print_str_at + //SEG394 [243] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] print_str_at_from_b14: - //SEG404 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 + //SEG395 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$17 sta print_str_at.at+1 - //SEG405 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 + //SEG396 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 lda #str10 sta print_str_at.str+1 jsr print_str_at - //SEG406 [214] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] + //SEG397 [205] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] b15_from_b14: jmp b15 - //SEG407 debug_print_init::@15 + //SEG398 debug_print_init::@15 b15: - //SEG408 [215] call print_str_at - //SEG409 [252] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] + //SEG399 [206] call print_str_at + //SEG400 [243] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] print_str_at_from_b15: - //SEG410 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 + //SEG401 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$18 sta print_str_at.at+1 - //SEG411 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 + //SEG402 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 lda #str11 sta print_str_at.str+1 jsr print_str_at - //SEG412 [216] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1] + //SEG403 [207] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1] b1_from_b15: - //SEG413 [216] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 + //SEG404 [207] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG414 [216] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 + //SEG405 [207] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 lda #4 sta c jmp b1 - //SEG415 [216] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] + //SEG406 [207] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] b1_from_b3: - //SEG416 [216] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy - //SEG417 [216] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy + //SEG407 [207] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy + //SEG408 [207] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy jmp b1 - //SEG418 debug_print_init::@1 + //SEG409 debug_print_init::@1 b1: - //SEG419 [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG410 [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG420 [218] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG411 [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xs,y - //SEG421 [219] call print_sbyte_at - //SEG422 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] + //SEG412 [210] call print_sbyte_at + //SEG413 [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG423 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy - //SEG424 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy + //SEG414 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy + //SEG415 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b16 - //SEG425 debug_print_init::@16 + //SEG416 debug_print_init::@16 b16: - //SEG426 [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG417 [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG427 [221] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG418 [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx ys,y - //SEG428 [222] call print_sbyte_at - //SEG429 [114] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] + //SEG419 [213] call print_sbyte_at + //SEG420 [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] print_sbyte_at_from_b16: - //SEG430 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy - //SEG431 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy + //SEG421 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy + //SEG422 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b17 - //SEG432 debug_print_init::@17 + //SEG423 debug_print_init::@17 b17: - //SEG433 [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG424 [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG434 [224] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG425 [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx zs,y - //SEG435 [225] call print_sbyte_at - //SEG436 [114] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] + //SEG426 [216] call print_sbyte_at + //SEG427 [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] print_sbyte_at_from_b17: - //SEG437 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy - //SEG438 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy + //SEG428 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy + //SEG429 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG439 [226] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2] + //SEG430 [217] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2] b2_from_b17: - //SEG440 [226] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuyy=vbuc1 + //SEG431 [217] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG441 [226] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] + //SEG432 [217] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] b2_from_b2: - //SEG442 [226] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy + //SEG433 [217] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy jmp b2 - //SEG443 debug_print_init::@2 + //SEG434 debug_print_init::@2 b2: - //SEG444 [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuxx=vbuc1_plus_vbuz1 + //SEG435 [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuxx=vbuc1_plus_vbuz1 lax i axs #-[8] - //SEG445 [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG436 [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols adc #0 sta _41+1 - //SEG446 [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG437 [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_41),y - //SEG447 [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG438 [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*1 adc #0 sta _44+1 - //SEG448 [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG439 [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_44),y - //SEG449 [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG440 [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*2 adc #0 sta _47+1 - //SEG450 [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG441 [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_47),y - //SEG451 [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG442 [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*3 adc #0 sta _50+1 - //SEG452 [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG443 [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_50),y - //SEG453 [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG444 [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*4 adc #0 sta _53+1 - //SEG454 [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG445 [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_53),y - //SEG455 [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG446 [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*5 adc #0 sta _56+1 - //SEG456 [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG447 [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_56),y - //SEG457 [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG448 [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*6 adc #0 sta _59+1 - //SEG458 [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG449 [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_59),y - //SEG459 [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG450 [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*7 adc #0 sta _62+1 - //SEG460 [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG451 [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_62),y - //SEG461 [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG452 [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*8 adc #0 sta _65+1 - //SEG462 [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG453 [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_65),y - //SEG463 [246] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuyy=_inc_vbuyy + //SEG454 [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuyy=_inc_vbuyy iny - //SEG464 [247] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG455 [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #4 bne b2_from_b2 jmp b3 - //SEG465 debug_print_init::@3 + //SEG456 debug_print_init::@3 b3: - //SEG466 [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG457 [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c axs #-[4] stx c - //SEG467 [249] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG458 [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG468 [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG459 [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b3 jmp breturn - //SEG469 debug_print_init::@return + //SEG460 debug_print_init::@return breturn: - //SEG470 [251] return + //SEG461 [242] return rts str: .text "sx@" str1: .text "sy@" @@ -9130,77 +8881,77 @@ debug_print_init: { str10: .text "xp@" str11: .text "yp@" } -//SEG471 print_str_at +//SEG462 print_str_at // Print a string at a specific screen position // print_str_at(byte* zeropage($b) str, byte* zeropage($d) at) print_str_at: { .label at = $d .label str = $b - //SEG472 [253] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG463 [244] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] b1_from_print_str_at: b1_from_b2: - //SEG473 [253] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG474 [253] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG464 [244] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG465 [244] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy jmp b1 - //SEG475 print_str_at::@1 + //SEG466 print_str_at::@1 b1: - //SEG476 [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG467 [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG477 print_str_at::@return + //SEG468 print_str_at::@return breturn: - //SEG478 [255] return + //SEG469 [246] return rts - //SEG479 print_str_at::@2 + //SEG470 print_str_at::@2 b2: - //SEG480 [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG471 [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (at),y - //SEG481 [257] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 + //SEG472 [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG482 [258] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 + //SEG473 [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG483 print_cls +//SEG474 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $f - //SEG484 [260] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG475 [251] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG485 [260] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG476 [251] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_screen sta sc+1 jmp b1 - //SEG486 [260] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG477 [251] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG487 [260] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG478 [251] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG488 print_cls::@1 + //SEG479 print_cls::@1 b1: - //SEG489 [261] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG480 [252] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG490 [262] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG481 [253] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG491 [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG482 [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_screen+$3e8 bne b1_from_b1 @@ -9208,48 +8959,48 @@ print_cls: { cmp #sprites_init::@1] + //SEG487 [257] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] b1_from_sprites_init: - //SEG497 [266] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 + //SEG488 [257] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG498 [266] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG489 [257] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] b1_from_b1: - //SEG499 [266] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG490 [257] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy jmp b1 - //SEG500 sprites_init::@1 + //SEG491 sprites_init::@1 b1: - //SEG501 [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG492 [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 lda #SPRITE/$40 sta sprites_ptr,x - //SEG502 [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG493 [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG503 [269] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx + //SEG494 [260] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG504 [270] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG495 [261] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b1 jmp breturn - //SEG505 sprites_init::@return + //SEG496 sprites_init::@return breturn: - //SEG506 [271] return + //SEG497 [262] return rts } -//SEG507 File Data +//SEG498 File Data print_hextab: .text "0123456789abcdef" // Positions to rotate xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34 @@ -9266,28 +9017,29 @@ sprites_init: { yps: .fill 8, 0 // The rotation matrix rotation_matrix: .fill 9, 0 -.pc = mulf_sqr1 "mulf_sqr1" - .for(var i=0;i<$200;i++) { + // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). + // f(x) = >(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } -.pc = SPRITE "SPRITE" - .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) - .for (var y=0; y<21; y++) - .for (var x=0;x<3; x++) - .byte pic.getSinglecolorByte(x,y) - -.pc = PERSP_Z "PERSP_Z" - { + // Perspective multiplication table containing (d/(z0-z)[z] for each z-value + .align $100 +PERSP_Z: +{ .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) @@ -9300,8 +9052,12 @@ sprites_init: { } } -.pc = SINH "SINH" - { + // Sine and Cosine Tables + // Angles: $00=0, $80=PI,$100=2*PI + // Half Sine/Cosine: signed fixed [-$20;20] + .align $40 +SINH: +{ .var min = -$2000 .var max = $2000 .var ampl = max-min; @@ -9311,8 +9067,10 @@ sprites_init: { } } -.pc = SINQ "SINQ" - { + // Quarter Sine/Cosine: signed fixed [-$10,$10] + .align $40 +SINQ: +{ .var min = -$1000 .var max = $1000 .var ampl = max-min; @@ -9322,49 +9080,11 @@ sprites_init: { } } -.pc = SINH_LO "SINH_LO" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINH_HI "SINH_HI" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_LO "SINQ_LO" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_HI "SINQ_HI" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } +.pc = SPRITE "SPRITE" + .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) + .for (var y=0; y<21; y++) + .for (var x=0;x<3; x++) + .byte pic.getSinglecolorByte(x,y) ASSEMBLER OPTIMIZATIONS @@ -9626,9 +9346,9 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [326] bne b1 to beq -Fixing long branch [926] bne b2 to beq -Fixing long branch [935] bne b1 to beq +Fixing long branch [299] bne b1 to beq +Fixing long branch [899] bne b2 to beq +Fixing long branch [908] bne b1 to beq FINAL SYMBOL TABLE (label) @1 @@ -9637,33 +9357,55 @@ FINAL SYMBOL TABLE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = (byte*) 53280 (signed byte*) COSH -(const signed byte*) COSH#0 COSH = (const signed byte*) SINH#0+(byte) $40 +(const signed byte*) COSH#0 COSH = (const signed byte[$140]) SINH#0+(byte) $40 (signed byte*) COSQ -(const signed byte*) COSQ#0 COSQ = (const signed byte*) SINQ#0+(byte) $40 +(const signed byte*) COSQ#0 COSQ = (const signed byte[$140]) SINQ#0+(byte) $40 (byte) GREEN (const byte) GREEN#0 GREEN = (byte) 5 (byte) LIGHT_BLUE (const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte) $e (byte) LIGHT_GREY (const byte) LIGHT_GREY#0 LIGHT_GREY = (byte) $f -(signed byte*) PERSP_Z -(const signed byte*) PERSP_Z#0 PERSP_Z = (signed byte*) 10240 +(signed byte[$100]) PERSP_Z +(const signed byte[$100]) PERSP_Z#0 PERSP_Z = kickasm {{ { + .var d = 256.0 + .var z0 = 6.0 + // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) + .for(var z=0;z<$100;z++) { + .if(z>127) { + .byte round(d / (z0 - ((z - 256) / 64.0))); + } else { + .byte round(d / (z0 - (z / 64.0))); + } + } + } + }} (byte*) RASTER (const byte*) RASTER#0 RASTER = (byte*) 53266 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = (byte*) 1024 -(signed byte*) SINH -(const signed byte*) SINH#0 SINH = (signed byte*) 8192 -(byte*) SINH_HI -(const byte*) SINH_HI#0 SINH_HI = (byte*) 16896 -(byte*) SINH_LO -(const byte*) SINH_LO#0 SINH_LO = (byte*) 16384 -(signed byte*) SINQ -(const signed byte*) SINQ#0 SINQ = (signed byte*) 8704 -(byte*) SINQ_HI -(const byte*) SINQ_HI#0 SINQ_HI = (byte*) 17920 -(byte*) SINQ_LO -(const byte*) SINQ_LO#0 SINQ_LO = (byte*) 17408 +(signed byte[$140]) SINH +(const signed byte[$140]) SINH#0 SINH = kickasm {{ { + .var min = -$2000 + .var max = $2000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} +(signed byte[$140]) SINQ +(const signed byte[$140]) SINQ#0 SINQ = kickasm {{ { + .var min = -$1000 + .var max = $1000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} (byte*) SPRITE (const byte*) SPRITE#0 SPRITE = (byte*) 12288 (byte*) SPRITES_COLS @@ -9950,10 +9692,20 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@return -(byte*) mulf_sqr1 -(const byte*) mulf_sqr1#0 mulf_sqr1 = (byte*) 9216 -(byte*) mulf_sqr2 -(const byte*) mulf_sqr2#0 mulf_sqr2 = (byte*) 9728 +(byte[$200]) mulf_sqr1 +(const byte[$200]) mulf_sqr1#0 mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((i*i)/256) } + .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } + .if(i>351) { .byte round(((512-i)*(512-i))/256) } + } + }} +(byte[$200]) mulf_sqr2 +(const byte[$200]) mulf_sqr2#0 mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } + .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } + .if(i>351) { .byte round(((i-511)*(i-511))/256) } + } + }} (signed byte*) pp (const signed byte*) pp#0 pp = (signed byte*) 243 (signed byte[8]) pps @@ -10187,7 +9939,7 @@ zp ZP_WORD:44 [ debug_print_init::$65 ] FINAL ASSEMBLER -Score: 89044 +Score: 66004 //SEG0 File Comments // 3D Rotation using a Rotation Matrix @@ -10222,215 +9974,179 @@ Score: 89044 .label psp2 = $f8 .label SCREEN = $400 .const sz = 0 - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2400 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2600 // A single sprite .label SPRITE = $3000 - // Perspective multiplication table containing (d/(z0-z)[z] for each z-value - .label PERSP_Z = $2800 - // Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$20;20] - .label SINH = $2000 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$10,$10] - .label SINQ = $2200 - // 16 bit Sine and Cosine Tables - // Angles: $00=0, $80=PI,$100=2*PI - // Half Sine/Cosine: signed fixed [-$1f,$1f] - .label SINH_LO = $4000 - // sin(x) = cos(x+PI/2) - .label SINH_HI = $4200 - // sin(x) = cos(x+PI/2) - // Quarter Sine/Cosine: signed fixed [-$0f,$0f] - .label SINQ_LO = $4400 - // sin(x) = cos(x+PI/2) - .label SINQ_HI = $4600 .label COSH = SINH+$40 .label COSQ = SINQ+$40 .label sx = 2 .label sy = 3 //SEG3 @begin //SEG4 @1 -//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} -//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} -//SEG7 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }} -//SEG9 kickasm(location (const signed byte*) SINH#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -// sin(x) = cos(x+PI/2) -//SEG10 kickasm(location (const signed byte*) SINQ#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) } } }} -//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -// sin(x) = cos(x+PI/2) -//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ { .var min = -$2000 .var max = $2000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG13 kickasm(location (const byte*) SINQ_LO#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG14 kickasm(location (const byte*) SINQ_HI#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} -//SEG15 [11] call main -//SEG16 [12] phi from @1 to @end [phi:@1->@end] -//SEG17 @end -//SEG18 main +//SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { - //SEG19 asm { sei } + //SEG10 asm { sei } sei - //SEG20 [14] call sprites_init + //SEG11 [5] call sprites_init jsr sprites_init - //SEG21 main::@1 - //SEG22 [15] *((const word*) psp1#0) ← (word)(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 + //SEG12 main::@1 + //SEG13 [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 //mulf_init(); lda #mulf_sqr1 sta psp1+1 - //SEG23 [16] *((const word*) psp2#0) ← (word)(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 + //SEG14 [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 lda #mulf_sqr2 sta psp2+1 - //SEG24 [17] call debug_print_init - //SEG25 [190] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] + //SEG15 [8] call debug_print_init + //SEG16 [181] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init] jsr debug_print_init - //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG27 main::@2 - //SEG28 [19] call anim - //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim] + //SEG17 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 main::@2 + //SEG19 [10] call anim + //SEG20 [12] phi from main::@2 to anim [phi:main::@2->anim] jsr anim - //SEG30 main::@return - //SEG31 [20] return + //SEG21 main::@return + //SEG22 [11] return rts } -//SEG32 anim +//SEG23 anim anim: { .label i = 4 - //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1] - //SEG34 [22] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 + //SEG24 [13] phi from anim to anim::@1 [phi:anim->anim::@1] + //SEG25 [13] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 lda #0 sta sy - //SEG35 [22] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 + //SEG26 [13] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 sta sx //signed byte xmin = 0; //signed byte xmax = 0; - //SEG36 anim::@1 - //SEG37 anim::@2 + //SEG27 anim::@1 + //SEG28 anim::@2 b2: - //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG29 [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff cmp RASTER bne b2 - //SEG39 anim::@3 + //SEG30 anim::@3 b3: - //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG31 [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$fe cmp RASTER bne b3 - //SEG41 anim::@4 + //SEG32 anim::@4 b4: - //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG33 [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$fd cmp RASTER bne b4 - //SEG43 anim::@5 - //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG34 anim::@5 + //SEG35 [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG36 [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx - //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 - //SEG47 [29] call calculate_matrix + //SEG37 [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 + //SEG38 [20] call calculate_matrix jsr calculate_matrix - //SEG48 [30] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8] - //SEG49 anim::@8 - //SEG50 [31] call store_matrix + //SEG39 [21] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8] + //SEG40 anim::@8 + //SEG41 [22] call store_matrix jsr store_matrix - //SEG51 [32] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6] - //SEG52 [32] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 + //SEG42 [23] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6] + //SEG43 [23] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG53 [32] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6] - //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy - //SEG55 anim::@6 + //SEG44 [23] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6] + //SEG45 [23] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy + //SEG46 anim::@6 b6: - //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG47 [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG48 [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xs,y - //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG49 [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 lda ys,y sta rotate_matrix.y - //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG50 [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 lda zs,y sta rotate_matrix.z - //SEG60 [37] call rotate_matrix + //SEG51 [28] call rotate_matrix jsr rotate_matrix - //SEG61 anim::@9 - //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG52 anim::@9 + //SEG53 [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 //if(*xrxmax) xmax = *xr; ldy i lda xr sta xrs,y - //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG54 [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda yr sta yrs,y - //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG55 [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda zr sta zrs,y - //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG56 [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda pp sta pps,y - //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG57 [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda xp sta xps,y - //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 + //SEG58 [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 lda yp sta yps,y - //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 + //SEG59 [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 tya asl tax - //SEG69 [45] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG60 [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc xp - //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG61 [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_XPOS,x - //SEG71 [47] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 + //SEG62 [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 lda #$80 clc adc yp - //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG63 [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa sta SPRITES_YPOS,x - //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 + //SEG64 [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG74 [50] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG65 [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b6 - //SEG75 anim::@7 - //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 + //SEG66 anim::@7 + //SEG67 [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_GREY sta BORDERCOL - //SEG77 [52] call debug_print + //SEG68 [43] call debug_print jsr debug_print - //SEG78 anim::@10 - //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 + //SEG69 anim::@10 + //SEG70 [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 lda #LIGHT_BLUE sta BORDERCOL - //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 + //SEG71 [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 // Increment angles inc sx inc sx - //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 + //SEG72 [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 lax sy axs #3 stx sy - //SEG82 [22] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1] - //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy - //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy + //SEG73 [13] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1] + //SEG74 [13] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy + //SEG75 [13] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy jmp b2 } -//SEG85 debug_print +//SEG76 debug_print debug_print: { .const print_sbyte_pos1_col = $25 .const print_sbyte_pos2_row = 1 @@ -10458,184 +10174,184 @@ debug_print: { .label at_line = SCREEN+$13*$28 .label c = 5 .label i = 6 - //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 + //SEG77 [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 ldx sx - //SEG87 debug_print::print_sbyte_pos1 - //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 - //SEG89 [58] call print_sbyte_at - //SEG90 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] - //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG78 debug_print::print_sbyte_pos1 + //SEG79 [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 + //SEG80 [49] call print_sbyte_at + //SEG81 [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] + //SEG82 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos1_col sta print_sbyte_at.at+1 - //SEG92 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy + //SEG83 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG93 debug_print::@2 - //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 + //SEG84 debug_print::@2 + //SEG85 [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 ldx sy - //SEG95 debug_print::print_sbyte_pos2 - //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 - //SEG97 [61] call print_sbyte_at - //SEG98 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] - //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG86 debug_print::print_sbyte_pos2 + //SEG87 [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 + //SEG88 [52] call print_sbyte_at + //SEG89 [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] + //SEG90 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col sta print_sbyte_at.at+1 - //SEG100 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy + //SEG91 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG101 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] - //SEG102 debug_print::print_sbyte_pos3 - //SEG103 [63] call print_sbyte_at - //SEG104 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] - //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG92 [53] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3] + //SEG93 debug_print::print_sbyte_pos3 + //SEG94 [54] call print_sbyte_at + //SEG95 [105] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] + //SEG96 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta print_sbyte_at.at+1 - //SEG106 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 + //SEG97 [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 ldx #sz jsr print_sbyte_at - //SEG107 debug_print::@3 - //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsxx=_deref_pbsc1 + //SEG98 debug_print::@3 + //SEG99 [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsxx=_deref_pbsc1 ldx rotation_matrix - //SEG109 debug_print::print_sbyte_pos4 - //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 - //SEG111 [66] call print_sbyte_at - //SEG112 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] - //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG100 debug_print::print_sbyte_pos4 + //SEG101 [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 + //SEG102 [57] call print_sbyte_at + //SEG103 [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] + //SEG104 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta print_sbyte_at.at+1 - //SEG114 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy + //SEG105 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG115 debug_print::@4 - //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsxx=_deref_pbsc1 + //SEG106 debug_print::@4 + //SEG107 [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+1 - //SEG117 debug_print::print_sbyte_pos5 - //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 - //SEG119 [69] call print_sbyte_at - //SEG120 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] - //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG108 debug_print::print_sbyte_pos5 + //SEG109 [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 + //SEG110 [60] call print_sbyte_at + //SEG111 [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] + //SEG112 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta print_sbyte_at.at+1 - //SEG122 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy + //SEG113 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG123 debug_print::@5 - //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsxx=_deref_pbsc1 + //SEG114 debug_print::@5 + //SEG115 [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+2 - //SEG125 debug_print::print_sbyte_pos6 - //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 - //SEG127 [72] call print_sbyte_at - //SEG128 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] - //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG116 debug_print::print_sbyte_pos6 + //SEG117 [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 + //SEG118 [63] call print_sbyte_at + //SEG119 [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] + //SEG120 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta print_sbyte_at.at+1 - //SEG130 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy + //SEG121 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG131 debug_print::@6 - //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsxx=_deref_pbsc1 + //SEG122 debug_print::@6 + //SEG123 [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+3 - //SEG133 debug_print::print_sbyte_pos7 - //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 - //SEG135 [75] call print_sbyte_at - //SEG136 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] - //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG124 debug_print::print_sbyte_pos7 + //SEG125 [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 + //SEG126 [66] call print_sbyte_at + //SEG127 [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] + //SEG128 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta print_sbyte_at.at+1 - //SEG138 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy + //SEG129 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG139 debug_print::@7 - //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsxx=_deref_pbsc1 + //SEG130 debug_print::@7 + //SEG131 [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+4 - //SEG141 debug_print::print_sbyte_pos8 - //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 - //SEG143 [78] call print_sbyte_at - //SEG144 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] - //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG132 debug_print::print_sbyte_pos8 + //SEG133 [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 + //SEG134 [69] call print_sbyte_at + //SEG135 [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] + //SEG136 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta print_sbyte_at.at+1 - //SEG146 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy + //SEG137 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG147 debug_print::@8 - //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsxx=_deref_pbsc1 + //SEG138 debug_print::@8 + //SEG139 [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+5 - //SEG149 debug_print::print_sbyte_pos9 - //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 - //SEG151 [81] call print_sbyte_at - //SEG152 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] - //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG140 debug_print::print_sbyte_pos9 + //SEG141 [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 + //SEG142 [72] call print_sbyte_at + //SEG143 [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] + //SEG144 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta print_sbyte_at.at+1 - //SEG154 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy + //SEG145 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG155 debug_print::@9 - //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsxx=_deref_pbsc1 + //SEG146 debug_print::@9 + //SEG147 [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+6 - //SEG157 debug_print::print_sbyte_pos10 - //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 - //SEG159 [84] call print_sbyte_at - //SEG160 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] - //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG148 debug_print::print_sbyte_pos10 + //SEG149 [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 + //SEG150 [75] call print_sbyte_at + //SEG151 [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] + //SEG152 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta print_sbyte_at.at+1 - //SEG162 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy + //SEG153 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG163 debug_print::@10 - //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsxx=_deref_pbsc1 + //SEG154 debug_print::@10 + //SEG155 [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+7 - //SEG165 debug_print::print_sbyte_pos11 - //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 - //SEG167 [87] call print_sbyte_at - //SEG168 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] - //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG156 debug_print::print_sbyte_pos11 + //SEG157 [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 + //SEG158 [78] call print_sbyte_at + //SEG159 [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] + //SEG160 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta print_sbyte_at.at+1 - //SEG170 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy + //SEG161 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG171 debug_print::@11 - //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsxx=_deref_pbsc1 + //SEG162 debug_print::@11 + //SEG163 [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsxx=_deref_pbsc1 ldx rotation_matrix+8 - //SEG173 debug_print::print_sbyte_pos12 - //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 - //SEG175 [90] call print_sbyte_at - //SEG176 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] - //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 + //SEG164 debug_print::print_sbyte_pos12 + //SEG165 [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 + //SEG166 [81] call print_sbyte_at + //SEG167 [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] + //SEG168 [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col sta print_sbyte_at.at+1 - //SEG178 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy + //SEG169 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG179 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] - //SEG180 [91] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 + //SEG170 [82] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1] + //SEG171 [82] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG181 [91] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 + //SEG172 [82] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 lda #4 sta c - //SEG182 [91] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1] - //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy - //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy - //SEG185 debug_print::@1 + //SEG173 [82] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1] + //SEG174 [82] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy + //SEG175 [82] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy + //SEG176 debug_print::@1 b1: - //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG177 [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG178 [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xrs,y - //SEG188 [94] call print_sbyte_at - //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] - //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy - //SEG191 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy + //SEG179 [85] call print_sbyte_at + //SEG180 [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at] + //SEG181 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy + //SEG182 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG192 debug_print::@12 - //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG183 debug_print::@12 + //SEG184 [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG185 [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx yrs,y - //SEG195 [97] call print_sbyte_at - //SEG196 [114] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] - //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy - //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy + //SEG186 [88] call print_sbyte_at + //SEG187 [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at] + //SEG188 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy + //SEG189 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG199 debug_print::@13 - //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG190 debug_print::@13 + //SEG191 [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG192 [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx zrs,y - //SEG202 [100] call print_sbyte_at - //SEG203 [114] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] - //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy - //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy + //SEG193 [91] call print_sbyte_at + //SEG194 [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at] + //SEG195 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy + //SEG196 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG206 debug_print::@14 - //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG197 debug_print::@14 + //SEG198 [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*3 adc #0 sta print_sbyte_at.at+1 - //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG199 [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx pps,y - //SEG209 [103] call print_sbyte_at - //SEG210 [114] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] - //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy - //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy + //SEG200 [94] call print_sbyte_at + //SEG201 [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at] + //SEG202 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy + //SEG203 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG213 debug_print::@15 - //SEG214 [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG204 debug_print::@15 + //SEG205 [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*4 adc #0 sta print_sbyte_at.at+1 - //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG206 [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xps,y - //SEG216 [106] call print_sbyte_at - //SEG217 [114] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] - //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy - //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy + //SEG207 [97] call print_sbyte_at + //SEG208 [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at] + //SEG209 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy + //SEG210 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG220 debug_print::@16 - //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG211 debug_print::@16 + //SEG212 [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*5 adc #0 sta print_sbyte_at.at+1 - //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG213 [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx yps,y - //SEG223 [109] call print_sbyte_at - //SEG224 [114] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] - //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy - //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy + //SEG214 [100] call print_sbyte_at + //SEG215 [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at] + //SEG216 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy + //SEG217 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG227 debug_print::@17 - //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG218 debug_print::@17 + //SEG219 [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c axs #-[4] stx c - //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 + //SEG220 [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG230 [112] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG221 [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i beq !b1+ jmp b1 !b1: - //SEG231 debug_print::@return - //SEG232 [113] return + //SEG222 debug_print::@return + //SEG223 [104] return rts } -//SEG233 print_sbyte_at +//SEG224 print_sbyte_at // Print a signed byte as hex at a specific screen position // print_sbyte_at(signed byte register(X) b, byte* zeropage(7) at) print_sbyte_at: { .label at = 7 - //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 + //SEG225 [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 cpx #0 bmi b1 - //SEG235 print_sbyte_at::@3 - //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 - //SEG237 [117] call print_char_at - //SEG238 [126] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] - //SEG239 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG240 [126] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 + //SEG226 print_sbyte_at::@3 + //SEG227 [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 + //SEG228 [108] call print_char_at + //SEG229 [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG230 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG231 [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 ldy #' ' jsr print_char_at - //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] - //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy - //SEG243 print_sbyte_at::@2 + //SEG232 [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] + //SEG233 [109] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy + //SEG234 print_sbyte_at::@2 b2: - //SEG244 [119] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 - //SEG245 [120] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG235 [110] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 + //SEG236 [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG246 [121] call print_byte_at + //SEG237 [112] call print_byte_at jsr print_byte_at - //SEG247 print_sbyte_at::@return - //SEG248 [122] return + //SEG238 print_sbyte_at::@return + //SEG239 [113] return rts - //SEG249 print_sbyte_at::@1 + //SEG240 print_sbyte_at::@1 b1: - //SEG250 [123] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 - //SEG251 [124] call print_char_at - //SEG252 [126] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] - //SEG253 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG254 [126] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 + //SEG241 [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 + //SEG242 [115] call print_char_at + //SEG243 [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG244 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG245 [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 ldy #'-' jsr print_char_at - //SEG255 print_sbyte_at::@4 - //SEG256 [125] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx + //SEG246 print_sbyte_at::@4 + //SEG247 [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx txa eor #$ff clc @@ -10802,61 +10518,61 @@ print_sbyte_at: { tax jmp b2 } -//SEG257 print_char_at +//SEG248 print_char_at // Print a single char // print_char_at(byte register(Y) ch, byte* zeropage(7) at) print_char_at: { .label at = 7 - //SEG258 [127] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy + //SEG249 [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy tya ldy #0 sta (at),y - //SEG259 print_char_at::@return - //SEG260 [128] return + //SEG250 print_char_at::@return + //SEG251 [119] return rts } -//SEG261 print_byte_at +//SEG252 print_byte_at // Print a byte as HEX at a specific position // print_byte_at(byte register(X) b, byte* zeropage(7) at) print_byte_at: { .label at = 7 - //SEG262 [129] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 + //SEG253 [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 txa lsr lsr lsr lsr tay - //SEG263 [130] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy + //SEG254 [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy lda print_hextab,y tay - //SEG264 [131] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG265 [132] call print_char_at - //SEG266 [126] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] - //SEG267 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG268 [126] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG255 [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG256 [123] call print_char_at + //SEG257 [117] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG258 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG259 [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at - //SEG269 print_byte_at::@1 - //SEG270 [133] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + //SEG260 print_byte_at::@1 + //SEG261 [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 - //SEG271 [134] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG262 [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG272 [135] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG263 [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx ldy print_hextab,x - //SEG273 [136] call print_char_at - //SEG274 [126] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] - //SEG275 [126] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG276 [126] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG264 [127] call print_char_at + //SEG265 [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG266 [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG267 [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at - //SEG277 print_byte_at::@return - //SEG278 [137] return + //SEG268 print_byte_at::@return + //SEG269 [128] return rts } -//SEG279 rotate_matrix +//SEG270 rotate_matrix // Rotate a 3D point (x,y,z) using the rotation matrix // The rotation matrix is prepared by calling prepare_matrix() // The passed points must be in the interval [-$3f;$3f]. @@ -10865,16 +10581,16 @@ print_byte_at: { rotate_matrix: { .label y = $11 .label z = $12 - //SEG280 [138] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx + //SEG271 [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx txa sta xr - //SEG281 [139] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 + //SEG272 [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 lda y sta yr - //SEG282 [140] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 + //SEG273 [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 lda z sta zr - //SEG283 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } + //SEG274 asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp } tax C1: lda mulf_sqr1,x @@ -10961,16 +10677,16 @@ rotate_matrix: { sec sbc (psp2),y sta xp - //SEG284 rotate_matrix::@return - //SEG285 [142] return + //SEG275 rotate_matrix::@return + //SEG276 [133] return rts } -//SEG286 store_matrix +//SEG277 store_matrix // Store the rotation matrix into the rotation routine rotate() // After this each call to rotate() will rotate a point with the matrix // Implemented in assembler to utilize seriously fast multiplication store_matrix: { - //SEG287 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } + //SEG278 asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1 } lda rotation_matrix+0 sta rotate_matrix.A1+1 eor #$ff @@ -11007,11 +10723,11 @@ store_matrix: { sta rotate_matrix.I1+1 eor #$ff sta rotate_matrix.I2+1 - //SEG288 store_matrix::@return - //SEG289 [144] return + //SEG279 store_matrix::@return + //SEG280 [135] return rts } -//SEG290 calculate_matrix +//SEG281 calculate_matrix // Prepare the 3x3 rotation matrix into rotation_matrix[] // Angles sx, sy, sz are based on 2*PI=$100 // Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt @@ -11027,186 +10743,186 @@ calculate_matrix: { .label t7 = $19 .label t8 = $1a .label t9 = $1b - //SEG291 [145] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 + //SEG282 [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 lda sy sta t1 - //SEG292 [146] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 + //SEG283 [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 lda sy sta t2 - //SEG293 [147] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx + //SEG284 [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx stx t3 - //SEG294 [148] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx + //SEG285 [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx stx t4 - //SEG295 [149] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsz2 + //SEG286 [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsz2 txa clc adc t2 sta t5 - //SEG296 [150] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 + //SEG287 [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 txa sec sbc t1 sta t6 - //SEG297 [151] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 + //SEG288 [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 txa clc adc t1 sta t7 - //SEG298 [152] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx + //SEG289 [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx txa eor #$ff sec adc t2 sta t8 - //SEG299 [153] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx + //SEG290 [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx txa eor #$ff sec adc sy sta t9 - //SEG300 [154] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsxx=vbsz1_plus_vbsxx + //SEG291 [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsxx=vbsz1_plus_vbsxx txa clc adc sy tax - //SEG301 [155] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG292 [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldy t1 lda COSH,y ldy t2 clc adc COSH,y - //SEG302 [156] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa + //SEG293 [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa sta rotation_matrix - //SEG303 [157] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG294 [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldy t1 lda SINH,y ldy t2 sec sbc SINH,y - //SEG304 [158] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa + //SEG295 [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa sta rotation_matrix+1 - //SEG305 [159] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 + //SEG296 [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 ldy sy clc lda SINH,y adc SINH,y - //SEG306 [160] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa + //SEG297 [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa sta rotation_matrix+2 - //SEG307 [161] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG298 [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldy t3 lda SINH,y ldy t4 sec sbc SINH,y - //SEG308 [162] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG299 [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG309 [163] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG300 [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG310 [164] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG301 [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t8 clc adc COSQ,y - //SEG311 [165] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG302 [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc COSQ,y - //SEG312 [166] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa + //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa sta rotation_matrix+3 - //SEG313 [167] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG304 [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldy t3 lda COSH,y ldy t4 clc adc COSH,y - //SEG314 [168] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG305 [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t5 clc adc SINQ,y - //SEG315 [169] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG306 [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t6 sec sbc SINQ,y - //SEG316 [170] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG307 [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG317 [171] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG308 [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG318 [172] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa + //SEG309 [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa sta rotation_matrix+4 - //SEG319 [173] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsxx + //SEG310 [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsxx ldy t9 lda SINH,y sec sbc SINH,x - //SEG320 [174] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa + //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa sta rotation_matrix+5 - //SEG321 [175] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 + //SEG312 [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 ldy t4 lda COSH,y ldy t3 sec sbc COSH,y - //SEG322 [176] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG313 [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc SINQ,y - //SEG323 [177] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG314 [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc SINQ,y - //SEG324 [178] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG315 [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc SINQ,y - //SEG325 [179] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG316 [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t7 sec sbc SINQ,y - //SEG326 [180] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa + //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa sta rotation_matrix+6 - //SEG327 [181] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 + //SEG318 [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 ldy t3 lda SINH,y ldy t4 clc adc SINH,y - //SEG328 [182] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG319 [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t6 clc adc COSQ,y - //SEG329 [183] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG320 [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t5 sec sbc COSQ,y - //SEG330 [184] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 + //SEG321 [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 ldy t7 clc adc COSQ,y - //SEG331 [185] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 + //SEG322 [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 ldy t8 sec sbc COSQ,y - //SEG332 [186] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa + //SEG323 [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa sta rotation_matrix+7 - //SEG333 [187] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsxx + //SEG324 [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsxx lda COSH,x ldy t9 clc adc COSH,y - //SEG334 [188] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa + //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa sta rotation_matrix+8 - //SEG335 calculate_matrix::@return - //SEG336 [189] return + //SEG326 calculate_matrix::@return + //SEG327 [180] return rts } -//SEG337 debug_print_init +//SEG328 debug_print_init debug_print_init: { .label COLS = $d800 .label at_line = SCREEN+$10*$28 @@ -11222,202 +10938,202 @@ debug_print_init: { .label _65 = $2c .label c = 9 .label i = $a - //SEG338 [191] call print_cls - //SEG339 [259] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] + //SEG329 [182] call print_cls + //SEG330 [250] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls] jsr print_cls - //SEG340 [192] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4] - //SEG341 debug_print_init::@4 - //SEG342 [193] call print_str_at - //SEG343 [252] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at] - //SEG344 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 + //SEG331 [183] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4] + //SEG332 debug_print_init::@4 + //SEG333 [184] call print_str_at + //SEG334 [243] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at] + //SEG335 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$22 sta print_str_at.at+1 - //SEG345 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 + //SEG336 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 lda #str sta print_str_at.str+1 jsr print_str_at - //SEG346 [194] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5] - //SEG347 debug_print_init::@5 - //SEG348 [195] call print_str_at - //SEG349 [252] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] - //SEG350 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 + //SEG337 [185] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5] + //SEG338 debug_print_init::@5 + //SEG339 [186] call print_str_at + //SEG340 [243] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at] + //SEG341 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*1+$22 sta print_str_at.at+1 - //SEG351 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 + //SEG342 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 lda #str1 sta print_str_at.str+1 jsr print_str_at - //SEG352 [196] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] - //SEG353 debug_print_init::@6 - //SEG354 [197] call print_str_at - //SEG355 [252] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] - //SEG356 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 + //SEG343 [187] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6] + //SEG344 debug_print_init::@6 + //SEG345 [188] call print_str_at + //SEG346 [243] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at] + //SEG347 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*2+$22 sta print_str_at.at+1 - //SEG357 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 + //SEG348 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 lda #str2 sta print_str_at.str+1 jsr print_str_at - //SEG358 [198] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] - //SEG359 debug_print_init::@7 - //SEG360 [199] call print_str_at - //SEG361 [252] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] - //SEG362 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 + //SEG349 [189] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7] + //SEG350 debug_print_init::@7 + //SEG351 [190] call print_str_at + //SEG352 [243] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at] + //SEG353 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$10 sta print_str_at.at+1 - //SEG363 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 + //SEG354 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 lda #str3 sta print_str_at.str+1 jsr print_str_at - //SEG364 [200] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] - //SEG365 debug_print_init::@8 - //SEG366 [201] call print_str_at - //SEG367 [252] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] - //SEG368 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 + //SEG355 [191] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8] + //SEG356 debug_print_init::@8 + //SEG357 [192] call print_str_at + //SEG358 [243] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at] + //SEG359 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$11 sta print_str_at.at+1 - //SEG369 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 + //SEG360 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 lda #str4 sta print_str_at.str+1 jsr print_str_at - //SEG370 [202] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] - //SEG371 debug_print_init::@9 - //SEG372 [203] call print_str_at - //SEG373 [252] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] - //SEG374 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 + //SEG361 [193] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9] + //SEG362 debug_print_init::@9 + //SEG363 [194] call print_str_at + //SEG364 [243] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at] + //SEG365 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$12 sta print_str_at.at+1 - //SEG375 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 + //SEG366 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 lda #str5 sta print_str_at.str+1 jsr print_str_at - //SEG376 [204] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] - //SEG377 debug_print_init::@10 - //SEG378 [205] call print_str_at - //SEG379 [252] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] - //SEG380 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 + //SEG367 [195] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10] + //SEG368 debug_print_init::@10 + //SEG369 [196] call print_str_at + //SEG370 [243] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at] + //SEG371 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$13 sta print_str_at.at+1 - //SEG381 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 + //SEG372 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 lda #str6 sta print_str_at.str+1 jsr print_str_at - //SEG382 [206] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] - //SEG383 debug_print_init::@11 - //SEG384 [207] call print_str_at - //SEG385 [252] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] - //SEG386 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 + //SEG373 [197] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11] + //SEG374 debug_print_init::@11 + //SEG375 [198] call print_str_at + //SEG376 [243] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at] + //SEG377 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$14 sta print_str_at.at+1 - //SEG387 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 + //SEG378 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 lda #str7 sta print_str_at.str+1 jsr print_str_at - //SEG388 [208] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] - //SEG389 debug_print_init::@12 - //SEG390 [209] call print_str_at - //SEG391 [252] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] - //SEG392 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 + //SEG379 [199] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12] + //SEG380 debug_print_init::@12 + //SEG381 [200] call print_str_at + //SEG382 [243] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at] + //SEG383 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$15 sta print_str_at.at+1 - //SEG393 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 + //SEG384 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 lda #str8 sta print_str_at.str+1 jsr print_str_at - //SEG394 [210] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] - //SEG395 debug_print_init::@13 - //SEG396 [211] call print_str_at - //SEG397 [252] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] - //SEG398 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 + //SEG385 [201] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13] + //SEG386 debug_print_init::@13 + //SEG387 [202] call print_str_at + //SEG388 [243] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at] + //SEG389 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$16 sta print_str_at.at+1 - //SEG399 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 + //SEG390 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 lda #str9 sta print_str_at.str+1 jsr print_str_at - //SEG400 [212] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] - //SEG401 debug_print_init::@14 - //SEG402 [213] call print_str_at - //SEG403 [252] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] - //SEG404 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 + //SEG391 [203] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14] + //SEG392 debug_print_init::@14 + //SEG393 [204] call print_str_at + //SEG394 [243] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at] + //SEG395 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$17 sta print_str_at.at+1 - //SEG405 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 + //SEG396 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 lda #str10 sta print_str_at.str+1 jsr print_str_at - //SEG406 [214] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] - //SEG407 debug_print_init::@15 - //SEG408 [215] call print_str_at - //SEG409 [252] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] - //SEG410 [252] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 + //SEG397 [205] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15] + //SEG398 debug_print_init::@15 + //SEG399 [206] call print_str_at + //SEG400 [243] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at] + //SEG401 [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 lda #SCREEN+$28*$18 sta print_str_at.at+1 - //SEG411 [252] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 + //SEG402 [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 lda #str11 sta print_str_at.str+1 jsr print_str_at - //SEG412 [216] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1] - //SEG413 [216] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 + //SEG403 [207] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1] + //SEG404 [207] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG414 [216] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 + //SEG405 [207] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 lda #4 sta c - //SEG415 [216] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] - //SEG416 [216] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy - //SEG417 [216] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy - //SEG418 debug_print_init::@1 + //SEG406 [207] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1] + //SEG407 [207] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy + //SEG408 [207] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy + //SEG409 debug_print_init::@1 b1: - //SEG419 [217] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG410 [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line adc #0 sta print_sbyte_at.at+1 - //SEG420 [218] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG411 [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx xs,y - //SEG421 [219] call print_sbyte_at - //SEG422 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] - //SEG423 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy - //SEG424 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy + //SEG412 [210] call print_sbyte_at + //SEG413 [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at] + //SEG414 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy + //SEG415 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG425 debug_print_init::@16 - //SEG426 [220] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG416 debug_print_init::@16 + //SEG417 [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*1 adc #0 sta print_sbyte_at.at+1 - //SEG427 [221] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG418 [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx ys,y - //SEG428 [222] call print_sbyte_at - //SEG429 [114] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] - //SEG430 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy - //SEG431 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy + //SEG419 [213] call print_sbyte_at + //SEG420 [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at] + //SEG421 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy + //SEG422 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG432 debug_print_init::@17 - //SEG433 [223] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG423 debug_print_init::@17 + //SEG424 [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_line+$28*2 adc #0 sta print_sbyte_at.at+1 - //SEG434 [224] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG425 [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy i ldx zs,y - //SEG435 [225] call print_sbyte_at - //SEG436 [114] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] - //SEG437 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy - //SEG438 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy + //SEG426 [216] call print_sbyte_at + //SEG427 [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at] + //SEG428 [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy + //SEG429 [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG439 [226] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2] - //SEG440 [226] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuyy=vbuc1 + //SEG430 [217] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2] + //SEG431 [217] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG441 [226] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] - //SEG442 [226] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy - //SEG443 debug_print_init::@2 + //SEG432 [217] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2] + //SEG433 [217] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy + //SEG434 debug_print_init::@2 b2: - //SEG444 [227] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuxx=vbuc1_plus_vbuz1 + //SEG435 [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuxx=vbuc1_plus_vbuz1 lax i axs #-[8] - //SEG445 [228] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG436 [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols adc #0 sta _41+1 - //SEG446 [229] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG437 [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_41),y - //SEG447 [230] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG438 [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*1 adc #0 sta _44+1 - //SEG448 [231] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG439 [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_44),y - //SEG449 [232] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG440 [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*2 adc #0 sta _47+1 - //SEG450 [233] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG441 [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_47),y - //SEG451 [234] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG442 [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*3 adc #0 sta _50+1 - //SEG452 [235] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG443 [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_50),y - //SEG453 [236] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG444 [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*4 adc #0 sta _53+1 - //SEG454 [237] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG445 [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_53),y - //SEG455 [238] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG446 [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*5 adc #0 sta _56+1 - //SEG456 [239] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG447 [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_56),y - //SEG457 [240] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG448 [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*6 adc #0 sta _59+1 - //SEG458 [241] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG449 [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_59),y - //SEG459 [242] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG450 [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*7 adc #0 sta _62+1 - //SEG460 [243] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG451 [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_62),y - //SEG461 [244] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 + //SEG452 [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 lda c clc adc #at_cols+$28*8 adc #0 sta _65+1 - //SEG462 [245] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx + //SEG453 [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx txa sta (_65),y - //SEG463 [246] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuyy=_inc_vbuyy + //SEG454 [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuyy=_inc_vbuyy iny - //SEG464 [247] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG455 [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #4 beq !b2+ jmp b2 !b2: - //SEG465 debug_print_init::@3 - //SEG466 [248] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 + //SEG456 debug_print_init::@3 + //SEG457 [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 lax c axs #-[4] stx c - //SEG467 [249] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG458 [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG468 [250] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG459 [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i beq !b1+ jmp b1 !b1: - //SEG469 debug_print_init::@return - //SEG470 [251] return + //SEG460 debug_print_init::@return + //SEG461 [242] return rts str: .text "sx@" str1: .text "sy@" @@ -11612,108 +11328,108 @@ debug_print_init: { str10: .text "xp@" str11: .text "yp@" } -//SEG471 print_str_at +//SEG462 print_str_at // Print a string at a specific screen position // print_str_at(byte* zeropage($b) str, byte* zeropage($d) at) print_str_at: { .label at = $d .label str = $b - //SEG472 [253] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] - //SEG473 [253] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy - //SEG474 [253] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy - //SEG475 print_str_at::@1 + //SEG463 [244] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1] + //SEG464 [244] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy + //SEG465 [244] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy + //SEG466 print_str_at::@1 b1: - //SEG476 [254] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG467 [245] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG477 print_str_at::@return - //SEG478 [255] return + //SEG468 print_str_at::@return + //SEG469 [246] return rts - //SEG479 print_str_at::@2 + //SEG470 print_str_at::@2 b2: - //SEG480 [256] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG471 [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (at),y - //SEG481 [257] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 + //SEG472 [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 inc at bne !+ inc at+1 !: - //SEG482 [258] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 + //SEG473 [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG483 print_cls +//SEG474 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $f - //SEG484 [260] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG485 [260] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG475 [251] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG476 [251] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_screen sta sc+1 - //SEG486 [260] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG487 [260] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG488 print_cls::@1 + //SEG477 [251] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG478 [251] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG479 print_cls::@1 b1: - //SEG489 [261] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG480 [252] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG490 [262] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG481 [253] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG491 [263] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG482 [254] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_screen+$3e8 bne b1 lda sc cmp #sprites_init::@1] - //SEG497 [266] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 + //SEG487 [257] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1] + //SEG488 [257] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG498 [266] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] - //SEG499 [266] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy - //SEG500 sprites_init::@1 + //SEG489 [257] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1] + //SEG490 [257] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy + //SEG491 sprites_init::@1 b1: - //SEG501 [267] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG492 [258] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 lda #SPRITE/$40 sta sprites_ptr,x - //SEG502 [268] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG493 [259] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG503 [269] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx + //SEG494 [260] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG504 [270] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG495 [261] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG505 sprites_init::@return - //SEG506 [271] return + //SEG496 sprites_init::@return + //SEG497 [262] return rts } -//SEG507 File Data +//SEG498 File Data print_hextab: .text "0123456789abcdef" // Positions to rotate xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34 @@ -11730,28 +11446,29 @@ sprites_init: { yps: .fill 8, 0 // The rotation matrix rotation_matrix: .fill 9, 0 -.pc = mulf_sqr1 "mulf_sqr1" - .for(var i=0;i<$200;i++) { + // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). + // f(x) = >(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } -.pc = SPRITE "SPRITE" - .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) - .for (var y=0; y<21; y++) - .for (var x=0;x<3; x++) - .byte pic.getSinglecolorByte(x,y) - -.pc = PERSP_Z "PERSP_Z" - { + // Perspective multiplication table containing (d/(z0-z)[z] for each z-value + .align $100 +PERSP_Z: +{ .var d = 256.0 .var z0 = 6.0 // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) @@ -11764,8 +11481,12 @@ sprites_init: { } } -.pc = SINH "SINH" - { + // Sine and Cosine Tables + // Angles: $00=0, $80=PI,$100=2*PI + // Half Sine/Cosine: signed fixed [-$20;20] + .align $40 +SINH: +{ .var min = -$2000 .var max = $2000 .var ampl = max-min; @@ -11775,8 +11496,10 @@ sprites_init: { } } -.pc = SINQ "SINQ" - { + // Quarter Sine/Cosine: signed fixed [-$10,$10] + .align $40 +SINQ: +{ .var min = -$1000 .var max = $1000 .var ampl = max-min; @@ -11786,48 +11509,10 @@ sprites_init: { } } -.pc = SINH_LO "SINH_LO" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINH_HI "SINH_HI" - { - .var min = -$2000 - .var max = $2000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_LO "SINQ_LO" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte <(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } - -.pc = SINQ_HI "SINQ_HI" - { - .var min = -$1000 - .var max = $1000 - .var ampl = max-min; - .for(var i=0;i<$140;i++) { - .var rad = i*2*PI/256; - .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) - } - } +.pc = SPRITE "SPRITE" + .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) + .for (var y=0; y<21; y++) + .for (var x=0;x<3; x++) + .byte pic.getSinglecolorByte(x,y) diff --git a/src/test/ref/examples/3d/3d.sym b/src/test/ref/examples/3d/3d.sym index eab8fba94..df9bb5f81 100644 --- a/src/test/ref/examples/3d/3d.sym +++ b/src/test/ref/examples/3d/3d.sym @@ -4,33 +4,55 @@ (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = (byte*) 53280 (signed byte*) COSH -(const signed byte*) COSH#0 COSH = (const signed byte*) SINH#0+(byte) $40 +(const signed byte*) COSH#0 COSH = (const signed byte[$140]) SINH#0+(byte) $40 (signed byte*) COSQ -(const signed byte*) COSQ#0 COSQ = (const signed byte*) SINQ#0+(byte) $40 +(const signed byte*) COSQ#0 COSQ = (const signed byte[$140]) SINQ#0+(byte) $40 (byte) GREEN (const byte) GREEN#0 GREEN = (byte) 5 (byte) LIGHT_BLUE (const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte) $e (byte) LIGHT_GREY (const byte) LIGHT_GREY#0 LIGHT_GREY = (byte) $f -(signed byte*) PERSP_Z -(const signed byte*) PERSP_Z#0 PERSP_Z = (signed byte*) 10240 +(signed byte[$100]) PERSP_Z +(const signed byte[$100]) PERSP_Z#0 PERSP_Z = kickasm {{ { + .var d = 256.0 + .var z0 = 6.0 + // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f) + .for(var z=0;z<$100;z++) { + .if(z>127) { + .byte round(d / (z0 - ((z - 256) / 64.0))); + } else { + .byte round(d / (z0 - (z / 64.0))); + } + } + } + }} (byte*) RASTER (const byte*) RASTER#0 RASTER = (byte*) 53266 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = (byte*) 1024 -(signed byte*) SINH -(const signed byte*) SINH#0 SINH = (signed byte*) 8192 -(byte*) SINH_HI -(const byte*) SINH_HI#0 SINH_HI = (byte*) 16896 -(byte*) SINH_LO -(const byte*) SINH_LO#0 SINH_LO = (byte*) 16384 -(signed byte*) SINQ -(const signed byte*) SINQ#0 SINQ = (signed byte*) 8704 -(byte*) SINQ_HI -(const byte*) SINQ_HI#0 SINQ_HI = (byte*) 17920 -(byte*) SINQ_LO -(const byte*) SINQ_LO#0 SINQ_LO = (byte*) 17408 +(signed byte[$140]) SINH +(const signed byte[$140]) SINH#0 SINH = kickasm {{ { + .var min = -$2000 + .var max = $2000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} +(signed byte[$140]) SINQ +(const signed byte[$140]) SINQ#0 SINQ = kickasm {{ { + .var min = -$1000 + .var max = $1000 + .var ampl = max-min; + .for(var i=0;i<$140;i++) { + .var rad = i*2*PI/256; + .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256) + } + } + }} (byte*) SPRITE (const byte*) SPRITE#0 SPRITE = (byte*) 12288 (byte*) SPRITES_COLS @@ -317,10 +339,20 @@ (label) main::@1 (label) main::@2 (label) main::@return -(byte*) mulf_sqr1 -(const byte*) mulf_sqr1#0 mulf_sqr1 = (byte*) 9216 -(byte*) mulf_sqr2 -(const byte*) mulf_sqr2#0 mulf_sqr2 = (byte*) 9728 +(byte[$200]) mulf_sqr1 +(const byte[$200]) mulf_sqr1#0 mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((i*i)/256) } + .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } + .if(i>351) { .byte round(((512-i)*(512-i))/256) } + } + }} +(byte[$200]) mulf_sqr2 +(const byte[$200]) mulf_sqr2#0 mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } + .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } + .if(i>351) { .byte round(((i-511)*(i-511))/256) } + } + }} (signed byte*) pp (const signed byte*) pp#0 pp = (signed byte*) 243 (signed byte[8]) pps diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.asm b/src/test/ref/examples/fastmultiply/fastmultiply8.asm index de1184ede..c08ced1a4 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.asm +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.asm @@ -13,11 +13,6 @@ .label ap = $fd .label bp = $fe .label cp = $ff - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2000 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2200 main: { .label at = 2 .label at_2 = 4 @@ -252,15 +247,20 @@ print_cls: { } print_hextab: .text "0123456789abcdef" vals: .byte -$5f, -$40, -$20, -$10, 0, $10, $20, $40, $5f -.pc = mulf_sqr1 "mulf_sqr1" - .for(var i=0;i<$200;i++) { + // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). + // f(x) = >(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.cfg b/src/test/ref/examples/fastmultiply/fastmultiply8.cfg index ae54631b7..a5ce4bc9a 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.cfg +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.cfg @@ -2,165 +2,154 @@ [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((i*i)/256) } - .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } - .if(i>351) { .byte round(((512-i)*(512-i))/256) } - } - }} - kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } - .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } - .if(i>351) { .byte round(((i-511)*(i-511))/256) } - } - }} - [3] call main + [1] phi() + [2] call main to:@end @end: scope:[] from @1 - [4] phi() + [3] phi() main: scope:[main] from @1 - [5] phi() - [6] call init_screen + [4] phi() + [5] call init_screen to:main::@1 main::@1: scope:[main] from main main::@5 - [7] (byte*) main::at#4 ← phi( main/(byte*) 1024+(byte) 4 main::@5/(byte*) main::at#1 ) - [7] (byte) main::k#2 ← phi( main/(byte) 0 main::@5/(byte) main::k#1 ) - [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) - [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 - [10] call print_sbyte_at + [6] (byte*) main::at#4 ← phi( main/(byte*) 1024+(byte) 4 main::@5/(byte*) main::at#1 ) + [6] (byte) main::k#2 ← phi( main/(byte) 0 main::@5/(byte) main::k#1 ) + [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) + [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 + [9] call print_sbyte_at to:main::@5 main::@5: scope:[main] from main::@1 - [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 - [12] (byte) main::k#1 ← ++ (byte) main::k#2 - [13] if((byte) main::k#1!=(byte) 9) goto main::@1 + [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 + [11] (byte) main::k#1 ← ++ (byte) main::k#2 + [12] if((byte) main::k#1!=(byte) 9) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@4 main::@5 - [14] (byte) main::i#2 ← phi( main::@5/(byte) 0 main::@4/(byte) main::i#1 ) - [14] (byte*) main::at_line#2 ← phi( main::@5/(byte*) 1024 main::@4/(byte*) main::at#2 ) - [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 - [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) - [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 - [18] call print_sbyte_at + [13] (byte) main::i#2 ← phi( main::@5/(byte) 0 main::@4/(byte) main::i#1 ) + [13] (byte*) main::at_line#2 ← phi( main::@5/(byte*) 1024 main::@4/(byte*) main::at#2 ) + [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 + [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) + [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 + [17] call print_sbyte_at to:main::@6 main::@6: scope:[main] from main::@2 - [19] (byte*~) main::at#12 ← (byte*) main::at#2 + [18] (byte*~) main::at#12 ← (byte*) main::at#2 to:main::@3 main::@3: scope:[main] from main::@6 main::@8 - [20] (byte) main::j#2 ← phi( main::@8/(byte) main::j#1 main::@6/(byte) 0 ) - [20] (byte*) main::at#6 ← phi( main::@8/(byte*) main::at#3 main::@6/(byte*~) main::at#12 ) - [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 - [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) - [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) - [24] call fmul8 - [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 + [19] (byte) main::j#2 ← phi( main::@8/(byte) main::j#1 main::@6/(byte) 0 ) + [19] (byte*) main::at#6 ← phi( main::@8/(byte*) main::at#3 main::@6/(byte*~) main::at#12 ) + [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 + [21] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) + [22] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) + [23] call fmul8 + [24] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 to:main::@7 main::@7: scope:[main] from main::@3 - [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 - [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 - [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 - [29] call print_sbyte_at + [25] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 + [26] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 + [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 + [28] call print_sbyte_at to:main::@8 main::@8: scope:[main] from main::@7 - [30] (byte) main::j#1 ← ++ (byte) main::j#2 - [31] if((byte) main::j#1!=(byte) 9) goto main::@3 + [29] (byte) main::j#1 ← ++ (byte) main::j#2 + [30] if((byte) main::j#1!=(byte) 9) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@8 - [32] (byte) main::i#1 ← ++ (byte) main::i#2 - [33] if((byte) main::i#1!=(byte) 9) goto main::@2 + [31] (byte) main::i#1 ← ++ (byte) main::i#2 + [32] if((byte) main::i#1!=(byte) 9) goto main::@2 to:main::@return main::@return: scope:[main] from main::@4 - [34] return + [33] return to:@return print_sbyte_at: scope:[print_sbyte_at] from main::@1 main::@2 main::@7 - [35] (byte*) print_sbyte_at::at#3 ← phi( main::@1/(byte*) print_sbyte_at::at#0 main::@7/(byte*) print_sbyte_at::at#2 main::@2/(byte*) print_sbyte_at::at#1 ) - [35] (signed byte) print_sbyte_at::b#4 ← phi( main::@1/(signed byte) print_sbyte_at::b#1 main::@7/(signed byte) print_sbyte_at::b#3 main::@2/(signed byte) print_sbyte_at::b#2 ) - [36] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 + [34] (byte*) print_sbyte_at::at#3 ← phi( main::@1/(byte*) print_sbyte_at::at#0 main::@7/(byte*) print_sbyte_at::at#2 main::@2/(byte*) print_sbyte_at::at#1 ) + [34] (signed byte) print_sbyte_at::b#4 ← phi( main::@1/(signed byte) print_sbyte_at::b#1 main::@7/(signed byte) print_sbyte_at::b#3 main::@2/(signed byte) print_sbyte_at::b#2 ) + [35] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 to:print_sbyte_at::@3 print_sbyte_at::@3: scope:[print_sbyte_at] from print_sbyte_at - [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 - [38] call print_char_at + [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 + [37] call print_char_at to:print_sbyte_at::@2 print_sbyte_at::@2: scope:[print_sbyte_at] from print_sbyte_at::@3 print_sbyte_at::@4 - [39] (signed byte) print_sbyte_at::b#6 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#4 ) - [40] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 - [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 - [42] call print_byte_at + [38] (signed byte) print_sbyte_at::b#6 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#4 ) + [39] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 + [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 + [41] call print_byte_at to:print_sbyte_at::@return print_sbyte_at::@return: scope:[print_sbyte_at] from print_sbyte_at::@2 - [43] return + [42] return to:@return print_sbyte_at::@1: scope:[print_sbyte_at] from print_sbyte_at - [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 - [45] call print_char_at + [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 + [44] call print_char_at to:print_sbyte_at::@4 print_sbyte_at::@4: scope:[print_sbyte_at] from print_sbyte_at::@1 - [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 + [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 to:print_sbyte_at::@2 print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3 - [47] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) - [47] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) - [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 + [46] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) + [46] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) + [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 to:print_char_at::@return print_char_at::@return: scope:[print_char_at] from print_char_at - [49] return + [48] return to:@return print_byte_at: scope:[print_byte_at] from print_sbyte_at::@2 - [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 - [51] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) - [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - [53] call print_char_at + [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 + [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) + [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + [52] call print_char_at to:print_byte_at::@1 print_byte_at::@1: scope:[print_byte_at] from print_byte_at - [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f - [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 - [56] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) - [57] call print_char_at + [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f + [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 + [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) + [56] call print_char_at to:print_byte_at::@return print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@1 - [58] return + [57] return to:@return fmul8: scope:[fmul8] from main::@3 - [59] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 - [60] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 + [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 + [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } - [62] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) + [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) to:fmul8::@return fmul8::@return: scope:[fmul8] from fmul8 - [63] return + [62] return to:@return init_screen: scope:[init_screen] from main - [64] phi() - [65] call print_cls + [63] phi() + [64] call print_cls to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [66] (byte) init_screen::l#2 ← phi( init_screen::@1/(byte) init_screen::l#1 init_screen/(byte) 0 ) - [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 - [68] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 - [69] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 + [65] (byte) init_screen::l#2 ← phi( init_screen::@1/(byte) init_screen::l#1 init_screen/(byte) 0 ) + [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 + [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 + [68] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [70] (byte) init_screen::m#2 ← phi( init_screen::@1/(byte) 0 init_screen::@2/(byte) init_screen::m#1 ) - [70] (byte*) init_screen::COLS#3 ← phi( init_screen::@1/(byte*) 55296 init_screen::@2/(byte*) init_screen::COLS#1 ) - [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 - [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 - [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 - [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 - [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 - [76] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 - [77] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 + [69] (byte) init_screen::m#2 ← phi( init_screen::@1/(byte) 0 init_screen::@2/(byte) init_screen::m#1 ) + [69] (byte*) init_screen::COLS#3 ← phi( init_screen::@1/(byte*) 55296 init_screen::@2/(byte*) init_screen::COLS#1 ) + [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 + [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 + [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 + [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 + [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 + [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 + [76] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [78] return + [77] return to:@return print_cls: scope:[print_cls] from init_screen - [79] phi() + [78] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [80] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [81] *((byte*) print_cls::sc#2) ← (byte) ' ' - [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 + [79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [80] *((byte*) print_cls::sc#2) ← (byte) ' ' + [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [84] return + [83] return to:@return diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.log b/src/test/ref/examples/fastmultiply/fastmultiply8.log index 6e45e122c..6296e6fa1 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.log +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.log @@ -1,19 +1,15 @@ -Resolved forward reference mulf_sqr1 to (byte*) mulf_sqr1 -Resolved forward reference mulf_sqr2 to (byte*) mulf_sqr2 +Resolved forward reference mulf_sqr1 to (byte[$200]) mulf_sqr1 +Resolved forward reference mulf_sqr2 to (byte[$200]) mulf_sqr2 Adding pointer type conversion cast (byte*) print_screen in (byte*) print_screen ← (number) $400 Adding pointer type conversion cast (byte*) main::at_line in (byte*) main::at_line ← (number) $400 Adding pointer type conversion cast (byte*) init_screen::COLS in (byte*) init_screen::COLS ← (number) $d800 Adding pointer type conversion cast (signed byte*) ap in (signed byte*) ap ← (number) $fd Adding pointer type conversion cast (signed byte*) bp in (signed byte*) bp ← (number) $fe Adding pointer type conversion cast (signed byte*) cp in (signed byte*) cp ← (number) $ff -Adding pointer type conversion cast (byte*) mulf_sqr1 in (byte*) mulf_sqr1 ← (number) $2000 -Adding pointer type conversion cast (byte*) mulf_sqr2 in (byte*) mulf_sqr2 ← (number) $2200 Identified constant variable (byte) init_screen::WHITE Identified constant variable (signed byte*) ap Identified constant variable (signed byte*) bp Identified constant variable (signed byte*) cp -Identified constant variable (byte*) mulf_sqr1 -Identified constant variable (byte*) mulf_sqr2 Culled Empty Block (label) @1 Culled Empty Block (label) @2 Culled Empty Block (label) @3 @@ -285,15 +281,13 @@ fmul8::@return: scope:[fmul8] from fmul8 to:@return @22: scope:[] from @21 (byte*) print_screen#5 ← phi( @21/(byte*) print_screen#6 ) - (byte*) mulf_sqr1#0 ← ((byte*)) (number) $2000 - (byte*) mulf_sqr2#0 ← ((byte*)) (number) $2200 - kickasm(location (byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { + (byte[$200]) mulf_sqr1#0 ← kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} - kickasm(location (byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { + (byte[$200]) mulf_sqr2#0 ← kickasm {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } @@ -420,10 +414,10 @@ SYMBOL TABLE SSA (byte) main::k#3 (signed byte) main::r (signed byte) main::r#0 -(byte*) mulf_sqr1 -(byte*) mulf_sqr1#0 -(byte*) mulf_sqr2 -(byte*) mulf_sqr2#0 +(byte[$200]) mulf_sqr1 +(byte[$200]) mulf_sqr1#0 +(byte[$200]) mulf_sqr2 +(byte[$200]) mulf_sqr2#0 (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) (byte~) print_byte_at::$0 (number~) print_byte_at::$2 @@ -538,8 +532,6 @@ Inlining cast (byte) init_screen::WHITE#0 ← (unumber)(number) 1 Inlining cast (signed byte*) ap#0 ← (signed byte*)(number) $fd Inlining cast (signed byte*) bp#0 ← (signed byte*)(number) $fe Inlining cast (signed byte*) cp#0 ← (signed byte*)(number) $ff -Inlining cast (byte*) mulf_sqr1#0 ← (byte*)(number) $2000 -Inlining cast (byte*) mulf_sqr2#0 ← (byte*)(number) $2200 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast 0 @@ -572,8 +564,6 @@ Simplifying constant integer cast $28 Simplifying constant pointer cast (signed byte*) 253 Simplifying constant pointer cast (signed byte*) 254 Simplifying constant pointer cast (signed byte*) 255 -Simplifying constant pointer cast (byte*) 8192 -Simplifying constant pointer cast (byte*) 8704 Successful SSA optimization PassNCastSimplification Finalized signed number type (signed byte) 0 Finalized unsigned number type (byte) 1 @@ -664,8 +654,18 @@ Constant (const byte) init_screen::m#0 = 0 Constant (const signed byte*) ap#0 = (signed byte*) 253 Constant (const signed byte*) bp#0 = (signed byte*) 254 Constant (const signed byte*) cp#0 = (signed byte*) 255 -Constant (const byte*) mulf_sqr1#0 = (byte*) 8192 -Constant (const byte*) mulf_sqr2#0 = (byte*) 8704 +Constant (const byte[$200]) mulf_sqr1#0 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((i*i)/256) } + .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } + .if(i>351) { .byte round(((512-i)*(512-i))/256) } + } + }} +Constant (const byte[$200]) mulf_sqr2#0 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } + .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } + .if(i>351) { .byte round(((i-511)*(i-511))/256) } + } + }} Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_screen#0 Successful SSA optimization Pass2ConstantIdentification @@ -740,6 +740,7 @@ Adding NOP phi() at start of @begin Adding NOP phi() at start of @12 Adding NOP phi() at start of @19 Adding NOP phi() at start of @21 +Adding NOP phi() at start of @22 Adding NOP phi() at start of @23 Adding NOP phi() at start of @end Adding NOP phi() at start of main @@ -752,38 +753,38 @@ Adding NOP phi() at start of init_screen::@5 Adding NOP phi() at start of init_screen::@2 Adding NOP phi() at start of print_cls CALL GRAPH -Calls in [] to main:6 -Calls in [main] to init_screen:10 print_sbyte_at:17 print_sbyte_at:28 fmul8:34 print_sbyte_at:41 -Calls in [print_sbyte_at] to print_char_at:57 print_byte_at:62 print_char_at:67 -Calls in [print_byte_at] to print_char_at:78 print_char_at:84 -Calls in [init_screen] to print_cls:93 +Calls in [] to main:5 +Calls in [main] to init_screen:9 print_sbyte_at:16 print_sbyte_at:27 fmul8:33 print_sbyte_at:40 +Calls in [print_sbyte_at] to print_char_at:56 print_byte_at:61 print_char_at:66 +Calls in [print_byte_at] to print_char_at:77 print_char_at:83 +Calls in [init_screen] to print_cls:92 Created 15 initial phi equivalence classes -Coalesced [15] print_sbyte_at::b#10 ← print_sbyte_at::b#1 -Coalesced [16] print_sbyte_at::at#9 ← print_sbyte_at::at#0 -Coalesced [26] print_sbyte_at::b#12 ← print_sbyte_at::b#2 -Coalesced [27] print_sbyte_at::at#11 ← print_sbyte_at::at#1 -Not coalescing [29] main::at#12 ← main::at#2 -Coalesced [39] print_sbyte_at::b#11 ← print_sbyte_at::b#3 -Coalesced [40] print_sbyte_at::at#10 ← print_sbyte_at::at#2 -Coalesced [47] main::at_line#11 ← main::at#2 -Coalesced [48] main::i#8 ← main::i#1 -Coalesced [49] main::at#11 ← main::at#3 -Coalesced [50] main::j#5 ← main::j#1 -Coalesced [51] main::k#4 ← main::k#1 -Coalesced [52] main::at#10 ← main::at#1 -Coalesced [56] print_char_at::at#8 ← print_char_at::at#1 -Coalesced [58] print_sbyte_at::b#14 ← print_sbyte_at::b#4 -Coalesced [66] print_char_at::at#7 ← print_char_at::at#0 -Coalesced [69] print_sbyte_at::b#13 ← print_sbyte_at::b#0 -Coalesced [76] print_char_at::ch#5 ← print_char_at::ch#2 -Coalesced [77] print_char_at::at#5 ← print_char_at::at#2 -Coalesced [82] print_char_at::ch#6 ← print_char_at::ch#3 -Coalesced [83] print_char_at::at#6 ← print_char_at::at#3 -Coalesced [109] init_screen::COLS#5 ← init_screen::COLS#1 -Coalesced [110] init_screen::m#3 ← init_screen::m#1 -Coalesced [111] init_screen::l#3 ← init_screen::l#1 -Coalesced [118] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [14] print_sbyte_at::b#10 ← print_sbyte_at::b#1 +Coalesced [15] print_sbyte_at::at#9 ← print_sbyte_at::at#0 +Coalesced [25] print_sbyte_at::b#12 ← print_sbyte_at::b#2 +Coalesced [26] print_sbyte_at::at#11 ← print_sbyte_at::at#1 +Not coalescing [28] main::at#12 ← main::at#2 +Coalesced [38] print_sbyte_at::b#11 ← print_sbyte_at::b#3 +Coalesced [39] print_sbyte_at::at#10 ← print_sbyte_at::at#2 +Coalesced [46] main::at_line#11 ← main::at#2 +Coalesced [47] main::i#8 ← main::i#1 +Coalesced [48] main::at#11 ← main::at#3 +Coalesced [49] main::j#5 ← main::j#1 +Coalesced [50] main::k#4 ← main::k#1 +Coalesced [51] main::at#10 ← main::at#1 +Coalesced [55] print_char_at::at#8 ← print_char_at::at#1 +Coalesced [57] print_sbyte_at::b#14 ← print_sbyte_at::b#4 +Coalesced [65] print_char_at::at#7 ← print_char_at::at#0 +Coalesced [68] print_sbyte_at::b#13 ← print_sbyte_at::b#0 +Coalesced [75] print_char_at::ch#5 ← print_char_at::ch#2 +Coalesced [76] print_char_at::at#5 ← print_char_at::at#2 +Coalesced [81] print_char_at::ch#6 ← print_char_at::ch#3 +Coalesced [82] print_char_at::at#6 ← print_char_at::at#3 +Coalesced [108] init_screen::COLS#5 ← init_screen::COLS#1 +Coalesced [109] init_screen::m#3 ← init_screen::m#1 +Coalesced [110] init_screen::l#3 ← init_screen::l#1 +Coalesced [117] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 14 phi equivalence classes Culled Empty Block (label) @12 Culled Empty Block (label) @19 @@ -813,6 +814,7 @@ Renumbering block main::@10 to main::@7 Renumbering block main::@11 to main::@8 Renumbering block init_screen::@3 to init_screen::@2 Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of init_screen @@ -823,167 +825,156 @@ FINAL CONTROL FLOW GRAPH [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((i*i)/256) } - .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } - .if(i>351) { .byte round(((512-i)*(512-i))/256) } - } - }} - kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { - .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } - .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } - .if(i>351) { .byte round(((i-511)*(i-511))/256) } - } - }} - [3] call main + [1] phi() + [2] call main to:@end @end: scope:[] from @1 - [4] phi() + [3] phi() main: scope:[main] from @1 - [5] phi() - [6] call init_screen + [4] phi() + [5] call init_screen to:main::@1 main::@1: scope:[main] from main main::@5 - [7] (byte*) main::at#4 ← phi( main/(byte*) 1024+(byte) 4 main::@5/(byte*) main::at#1 ) - [7] (byte) main::k#2 ← phi( main/(byte) 0 main::@5/(byte) main::k#1 ) - [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) - [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 - [10] call print_sbyte_at + [6] (byte*) main::at#4 ← phi( main/(byte*) 1024+(byte) 4 main::@5/(byte*) main::at#1 ) + [6] (byte) main::k#2 ← phi( main/(byte) 0 main::@5/(byte) main::k#1 ) + [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) + [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 + [9] call print_sbyte_at to:main::@5 main::@5: scope:[main] from main::@1 - [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 - [12] (byte) main::k#1 ← ++ (byte) main::k#2 - [13] if((byte) main::k#1!=(byte) 9) goto main::@1 + [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 + [11] (byte) main::k#1 ← ++ (byte) main::k#2 + [12] if((byte) main::k#1!=(byte) 9) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@4 main::@5 - [14] (byte) main::i#2 ← phi( main::@5/(byte) 0 main::@4/(byte) main::i#1 ) - [14] (byte*) main::at_line#2 ← phi( main::@5/(byte*) 1024 main::@4/(byte*) main::at#2 ) - [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 - [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) - [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 - [18] call print_sbyte_at + [13] (byte) main::i#2 ← phi( main::@5/(byte) 0 main::@4/(byte) main::i#1 ) + [13] (byte*) main::at_line#2 ← phi( main::@5/(byte*) 1024 main::@4/(byte*) main::at#2 ) + [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 + [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) + [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 + [17] call print_sbyte_at to:main::@6 main::@6: scope:[main] from main::@2 - [19] (byte*~) main::at#12 ← (byte*) main::at#2 + [18] (byte*~) main::at#12 ← (byte*) main::at#2 to:main::@3 main::@3: scope:[main] from main::@6 main::@8 - [20] (byte) main::j#2 ← phi( main::@8/(byte) main::j#1 main::@6/(byte) 0 ) - [20] (byte*) main::at#6 ← phi( main::@8/(byte*) main::at#3 main::@6/(byte*~) main::at#12 ) - [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 - [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) - [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) - [24] call fmul8 - [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 + [19] (byte) main::j#2 ← phi( main::@8/(byte) main::j#1 main::@6/(byte) 0 ) + [19] (byte*) main::at#6 ← phi( main::@8/(byte*) main::at#3 main::@6/(byte*~) main::at#12 ) + [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 + [21] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) + [22] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) + [23] call fmul8 + [24] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 to:main::@7 main::@7: scope:[main] from main::@3 - [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 - [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 - [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 - [29] call print_sbyte_at + [25] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 + [26] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 + [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 + [28] call print_sbyte_at to:main::@8 main::@8: scope:[main] from main::@7 - [30] (byte) main::j#1 ← ++ (byte) main::j#2 - [31] if((byte) main::j#1!=(byte) 9) goto main::@3 + [29] (byte) main::j#1 ← ++ (byte) main::j#2 + [30] if((byte) main::j#1!=(byte) 9) goto main::@3 to:main::@4 main::@4: scope:[main] from main::@8 - [32] (byte) main::i#1 ← ++ (byte) main::i#2 - [33] if((byte) main::i#1!=(byte) 9) goto main::@2 + [31] (byte) main::i#1 ← ++ (byte) main::i#2 + [32] if((byte) main::i#1!=(byte) 9) goto main::@2 to:main::@return main::@return: scope:[main] from main::@4 - [34] return + [33] return to:@return print_sbyte_at: scope:[print_sbyte_at] from main::@1 main::@2 main::@7 - [35] (byte*) print_sbyte_at::at#3 ← phi( main::@1/(byte*) print_sbyte_at::at#0 main::@7/(byte*) print_sbyte_at::at#2 main::@2/(byte*) print_sbyte_at::at#1 ) - [35] (signed byte) print_sbyte_at::b#4 ← phi( main::@1/(signed byte) print_sbyte_at::b#1 main::@7/(signed byte) print_sbyte_at::b#3 main::@2/(signed byte) print_sbyte_at::b#2 ) - [36] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 + [34] (byte*) print_sbyte_at::at#3 ← phi( main::@1/(byte*) print_sbyte_at::at#0 main::@7/(byte*) print_sbyte_at::at#2 main::@2/(byte*) print_sbyte_at::at#1 ) + [34] (signed byte) print_sbyte_at::b#4 ← phi( main::@1/(signed byte) print_sbyte_at::b#1 main::@7/(signed byte) print_sbyte_at::b#3 main::@2/(signed byte) print_sbyte_at::b#2 ) + [35] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 to:print_sbyte_at::@3 print_sbyte_at::@3: scope:[print_sbyte_at] from print_sbyte_at - [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 - [38] call print_char_at + [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 + [37] call print_char_at to:print_sbyte_at::@2 print_sbyte_at::@2: scope:[print_sbyte_at] from print_sbyte_at::@3 print_sbyte_at::@4 - [39] (signed byte) print_sbyte_at::b#6 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#4 ) - [40] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 - [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 - [42] call print_byte_at + [38] (signed byte) print_sbyte_at::b#6 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#4 ) + [39] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 + [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 + [41] call print_byte_at to:print_sbyte_at::@return print_sbyte_at::@return: scope:[print_sbyte_at] from print_sbyte_at::@2 - [43] return + [42] return to:@return print_sbyte_at::@1: scope:[print_sbyte_at] from print_sbyte_at - [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 - [45] call print_char_at + [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 + [44] call print_char_at to:print_sbyte_at::@4 print_sbyte_at::@4: scope:[print_sbyte_at] from print_sbyte_at::@1 - [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 + [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 to:print_sbyte_at::@2 print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3 - [47] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) - [47] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) - [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 + [46] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 ) + [46] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' ) + [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 to:print_char_at::@return print_char_at::@return: scope:[print_char_at] from print_char_at - [49] return + [48] return to:@return print_byte_at: scope:[print_byte_at] from print_sbyte_at::@2 - [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 - [51] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) - [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - [53] call print_char_at + [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 + [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) + [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + [52] call print_char_at to:print_byte_at::@1 print_byte_at::@1: scope:[print_byte_at] from print_byte_at - [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f - [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 - [56] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) - [57] call print_char_at + [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f + [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 + [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) + [56] call print_char_at to:print_byte_at::@return print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@1 - [58] return + [57] return to:@return fmul8: scope:[fmul8] from main::@3 - [59] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 - [60] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 + [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 + [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } - [62] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) + [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) to:fmul8::@return fmul8::@return: scope:[fmul8] from fmul8 - [63] return + [62] return to:@return init_screen: scope:[init_screen] from main - [64] phi() - [65] call print_cls + [63] phi() + [64] call print_cls to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [66] (byte) init_screen::l#2 ← phi( init_screen::@1/(byte) init_screen::l#1 init_screen/(byte) 0 ) - [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 - [68] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 - [69] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 + [65] (byte) init_screen::l#2 ← phi( init_screen::@1/(byte) init_screen::l#1 init_screen/(byte) 0 ) + [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 + [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 + [68] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [70] (byte) init_screen::m#2 ← phi( init_screen::@1/(byte) 0 init_screen::@2/(byte) init_screen::m#1 ) - [70] (byte*) init_screen::COLS#3 ← phi( init_screen::@1/(byte*) 55296 init_screen::@2/(byte*) init_screen::COLS#1 ) - [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 - [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 - [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 - [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 - [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 - [76] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 - [77] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 + [69] (byte) init_screen::m#2 ← phi( init_screen::@1/(byte) 0 init_screen::@2/(byte) init_screen::m#1 ) + [69] (byte*) init_screen::COLS#3 ← phi( init_screen::@1/(byte*) 55296 init_screen::@2/(byte*) init_screen::COLS#1 ) + [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 + [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 + [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 + [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 + [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 + [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 + [76] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [78] return + [77] return to:@return print_cls: scope:[print_cls] from init_screen - [79] phi() + [78] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [80] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [81] *((byte*) print_cls::sc#2) ← (byte) ' ' - [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 + [79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [80] *((byte*) print_cls::sc#2) ← (byte) ' ' + [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [84] return + [83] return to:@return @@ -1031,8 +1022,8 @@ VARIABLE REGISTER WEIGHTS (byte) main::k#2 6.6000000000000005 (signed byte) main::r (signed byte) main::r#0 202.0 -(byte*) mulf_sqr1 -(byte*) mulf_sqr2 +(byte[$200]) mulf_sqr1 +(byte[$200]) mulf_sqr2 (void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) (byte~) print_byte_at::$0 4.0 (byte~) print_byte_at::$2 2.0 @@ -1163,28 +1154,23 @@ INITIAL ASM .label ap = $fd .label bp = $fe .label cp = $ff - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2000 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2200 //SEG3 @begin bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} -//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} -//SEG7 [3] call main -//SEG8 [5] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG9 [4] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG10 @end +//SEG9 @end bend: -//SEG11 main +//SEG10 main main: { .label at = 3 .label k = 2 @@ -1196,47 +1182,47 @@ main: { .label at_line = 5 .label at_6 = 8 .label at_12 = 8 - //SEG12 [6] call init_screen - //SEG13 [64] phi from main to init_screen [phi:main->init_screen] + //SEG11 [5] call init_screen + //SEG12 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen - //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG15 [7] phi (byte*) main::at#4 = (byte*) 1024+(byte) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) main::at#4 = (byte*) 1024+(byte) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400+4 sta at lda #>$400+4 sta at+1 - //SEG16 [7] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + //SEG15 [6] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #0 sta k jmp b1 - //SEG17 [7] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG16 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG18 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG19 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG17 [6] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG18 [6] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@5->main::@1#1] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG19 main::@1 b1: - //SEG21 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG20 [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy k lda vals,y sta print_sbyte_at.b - //SEG22 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 + //SEG21 [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG23 [10] call print_sbyte_at - //SEG24 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] + //SEG22 [9] call print_sbyte_at + //SEG23 [34] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG25 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy - //SEG26 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy + //SEG24 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy + //SEG25 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b5 - //SEG27 main::@5 + //SEG26 main::@5 b5: - //SEG28 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG27 [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 lda #4 clc adc at @@ -1244,31 +1230,31 @@ main: { bcc !+ inc at+1 !: - //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 + //SEG28 [11] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuz1=_inc_vbuz1 inc k - //SEG30 [13] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG29 [12] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp k bne b1_from_b5 - //SEG31 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG30 [13] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG32 [14] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 + //SEG31 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG33 [14] phi (byte*) main::at_line#2 = (byte*) 1024 [phi:main::@5->main::@2#1] -- pbuz1=pbuc1 + //SEG32 [13] phi (byte*) main::at_line#2 = (byte*) 1024 [phi:main::@5->main::@2#1] -- pbuz1=pbuc1 lda #<$400 sta at_line lda #>$400 sta at_line+1 jmp b2 - //SEG34 [14] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG33 [13] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG35 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy - //SEG36 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@4->main::@2#1] -- register_copy + //SEG34 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG35 [13] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@4->main::@2#1] -- register_copy jmp b2 - //SEG37 main::@2 + //SEG36 main::@2 b2: - //SEG38 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG37 [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc at_2 @@ -1276,44 +1262,44 @@ main: { bcc !+ inc at_2+1 !: - //SEG39 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG38 [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta print_sbyte_at.b - //SEG40 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG39 [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta print_sbyte_at.at lda at_2+1 sta print_sbyte_at.at+1 - //SEG41 [18] call print_sbyte_at - //SEG42 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] + //SEG40 [17] call print_sbyte_at + //SEG41 [34] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] print_sbyte_at_from_b2: - //SEG43 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy - //SEG44 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy + //SEG42 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy + //SEG43 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b6 - //SEG45 main::@6 + //SEG44 main::@6 b6: - //SEG46 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG45 [18] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta at_12 lda at_2+1 sta at_12+1 - //SEG47 [20] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG46 [19] phi from main::@6 to main::@3 [phi:main::@6->main::@3] b3_from_b6: - //SEG48 [20] phi (byte) main::j#2 = (byte) 0 [phi:main::@6->main::@3#0] -- vbuz1=vbuc1 + //SEG47 [19] phi (byte) main::j#2 = (byte) 0 [phi:main::@6->main::@3#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG49 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@6->main::@3#1] -- register_copy + //SEG48 [19] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@6->main::@3#1] -- register_copy jmp b3 - //SEG50 [20] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG49 [19] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG51 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@3#0] -- register_copy - //SEG52 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@8->main::@3#1] -- register_copy + //SEG50 [19] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@3#0] -- register_copy + //SEG51 [19] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@8->main::@3#1] -- register_copy jmp b3 - //SEG53 main::@3 + //SEG52 main::@3 b3: - //SEG54 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG53 [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 lda #4 clc adc at_3 @@ -1321,99 +1307,99 @@ main: { bcc !+ inc at_3+1 !: - //SEG55 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG54 [21] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta fmul8.a - //SEG56 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG55 [22] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy j lda vals,y sta fmul8.b - //SEG57 [24] call fmul8 + //SEG56 [23] call fmul8 jsr fmul8 - //SEG58 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 -- vbsz1=vbsz2 + //SEG57 [24] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 -- vbsz1=vbsz2 lda fmul8.return_1 sta fmul8.return jmp b7 - //SEG59 main::@7 + //SEG58 main::@7 b7: - //SEG60 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 -- vbsz1=vbsz2 + //SEG59 [25] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 -- vbsz1=vbsz2 lda fmul8.return sta r - //SEG61 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsz2 + //SEG60 [26] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsz2 lda r sta print_sbyte_at.b - //SEG62 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 + //SEG61 [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 lda at_3 sta print_sbyte_at.at lda at_3+1 sta print_sbyte_at.at+1 - //SEG63 [29] call print_sbyte_at - //SEG64 [35] phi from main::@7 to print_sbyte_at [phi:main::@7->print_sbyte_at] + //SEG62 [28] call print_sbyte_at + //SEG63 [34] phi from main::@7 to print_sbyte_at [phi:main::@7->print_sbyte_at] print_sbyte_at_from_b7: - //SEG65 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@7->print_sbyte_at#0] -- register_copy - //SEG66 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@7->print_sbyte_at#1] -- register_copy + //SEG64 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@7->print_sbyte_at#0] -- register_copy + //SEG65 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b8 - //SEG67 main::@8 + //SEG66 main::@8 b8: - //SEG68 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG67 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG69 [31] if((byte) main::j#1!=(byte) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [30] if((byte) main::j#1!=(byte) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp j bne b3_from_b8 jmp b4 - //SEG70 main::@4 + //SEG69 main::@4 b4: - //SEG71 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG70 [31] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG72 [33] if((byte) main::i#1!=(byte) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG71 [32] if((byte) main::i#1!=(byte) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp i bne b2_from_b4 jmp breturn - //SEG73 main::@return + //SEG72 main::@return breturn: - //SEG74 [34] return + //SEG73 [33] return rts } -//SEG75 print_sbyte_at +//SEG74 print_sbyte_at // Print a signed byte as hex at a specific screen position // print_sbyte_at(signed byte zeropage($d) b, byte* zeropage($b) at) print_sbyte_at: { .label b = $d .label at = $b - //SEG76 [36] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG75 [35] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 jmp b3 - //SEG77 print_sbyte_at::@3 + //SEG76 print_sbyte_at::@3 b3: - //SEG78 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 + //SEG77 [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG79 [38] call print_char_at - //SEG80 [47] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG78 [37] call print_char_at + //SEG79 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG81 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG82 [47] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG80 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG81 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG83 [39] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] + //SEG82 [38] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] b2_from_b3: b2_from_b4: - //SEG84 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy + //SEG83 [38] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG85 print_sbyte_at::@2 + //SEG84 print_sbyte_at::@2 b2: - //SEG86 [40] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 -- vbuz1=vbuz2 + //SEG85 [39] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 -- vbuz1=vbuz2 lda b sta print_byte_at.b - //SEG87 [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 -- pbuz1=pbuz2_plus_1 + //SEG86 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -1421,32 +1407,32 @@ print_sbyte_at: { lda at+1 adc #0 sta print_byte_at.at+1 - //SEG88 [42] call print_byte_at + //SEG87 [41] call print_byte_at jsr print_byte_at jmp breturn - //SEG89 print_sbyte_at::@return + //SEG88 print_sbyte_at::@return breturn: - //SEG90 [43] return + //SEG89 [42] return rts - //SEG91 print_sbyte_at::@1 + //SEG90 print_sbyte_at::@1 b1: - //SEG92 [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 + //SEG91 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG93 [45] call print_char_at - //SEG94 [47] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG92 [44] call print_char_at + //SEG93 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG95 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG96 [47] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG94 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG95 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at jmp b4 - //SEG97 print_sbyte_at::@4 + //SEG96 print_sbyte_at::@4 b4: - //SEG98 [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 + //SEG97 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -1454,23 +1440,23 @@ print_sbyte_at: { sta b jmp b2_from_b4 } -//SEG99 print_char_at +//SEG98 print_char_at // Print a single char // print_char_at(byte zeropage($e) ch, byte* zeropage($f) at) print_char_at: { .label at = $f .label ch = $e - //SEG100 [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG99 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y jmp breturn - //SEG101 print_char_at::@return + //SEG100 print_char_at::@return breturn: - //SEG102 [49] return + //SEG101 [48] return rts } -//SEG103 print_byte_at +//SEG102 print_byte_at // Print a byte as HEX at a specific position // print_byte_at(byte zeropage($1b) b, byte* zeropage($1c) at) print_byte_at: { @@ -1478,36 +1464,36 @@ print_byte_at: { .label _2 = $1f .label b = $1b .label at = $1c - //SEG104 [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + //SEG103 [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG105 [51] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG104 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char_at.ch - //SEG106 [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 + //SEG105 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 lda at sta print_char_at.at lda at+1 sta print_char_at.at+1 - //SEG107 [53] call print_char_at - //SEG108 [47] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG106 [52] call print_char_at + //SEG107 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG109 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG110 [47] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG108 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG109 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG111 print_byte_at::@1 + //SEG110 print_byte_at::@1 b1: - //SEG112 [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG111 [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG113 [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz2_plus_1 + //SEG112 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz2_plus_1 lda at clc adc #1 @@ -1515,36 +1501,36 @@ print_byte_at: { lda at+1 adc #0 sta print_char_at.at+1 - //SEG114 [56] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG113 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char_at.ch - //SEG115 [57] call print_char_at - //SEG116 [47] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG114 [56] call print_char_at + //SEG115 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG117 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG118 [47] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG116 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG117 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG119 print_byte_at::@return + //SEG118 print_byte_at::@return breturn: - //SEG120 [58] return + //SEG119 [57] return rts } -//SEG121 fmul8 +//SEG120 fmul8 // fmul8(signed byte zeropage($17) a, signed byte zeropage($18) b) fmul8: { .label a = $17 .label b = $18 .label return = $19 .label return_1 = $20 - //SEG122 [59] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsz1 + //SEG121 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsz1 lda a sta ap - //SEG123 [60] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsz1 + //SEG122 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsz1 lda b sta bp - //SEG124 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } + //SEG123 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } lda ap sta A1+1 eor #$ff @@ -1556,82 +1542,82 @@ fmul8: { A2: sbc mulf_sqr2,x sta cp - //SEG125 [62] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsz1=_deref_pbsc1 + //SEG124 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsz1=_deref_pbsc1 lda cp sta return_1 jmp breturn - //SEG126 fmul8::@return + //SEG125 fmul8::@return breturn: - //SEG127 [63] return + //SEG126 [62] return rts } -//SEG128 init_screen +//SEG127 init_screen init_screen: { .const WHITE = 1 .label l = $11 .label COLS = $12 .label m = $14 - //SEG129 [65] call print_cls - //SEG130 [79] phi from init_screen to print_cls [phi:init_screen->print_cls] + //SEG128 [64] call print_cls + //SEG129 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] print_cls_from_init_screen: jsr print_cls - //SEG131 [66] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG130 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG132 [66] phi (byte) init_screen::l#2 = (byte) 0 [phi:init_screen->init_screen::@1#0] -- vbuz1=vbuc1 + //SEG131 [65] phi (byte) init_screen::l#2 = (byte) 0 [phi:init_screen->init_screen::@1#0] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG133 [66] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG132 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG134 [66] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG133 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG135 init_screen::@1 + //SEG134 init_screen::@1 b1: - //SEG136 [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG135 [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #WHITE ldy l sta $d800,y - //SEG137 [68] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuz1=_inc_vbuz1 + //SEG136 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG138 [69] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG137 [68] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp l bne b1_from_b1 - //SEG139 [70] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG138 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG140 [70] phi (byte) init_screen::m#2 = (byte) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuz1=vbuc1 + //SEG139 [69] phi (byte) init_screen::m#2 = (byte) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuz1=vbuc1 lda #0 sta m - //SEG141 [70] phi (byte*) init_screen::COLS#3 = (byte*) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 + //SEG140 [69] phi (byte*) init_screen::COLS#3 = (byte*) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 lda #<$d800 sta COLS lda #>$d800 sta COLS+1 jmp b2 - //SEG142 [70] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG141 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG143 [70] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG144 [70] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy + //SEG142 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG143 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy jmp b2 - //SEG145 init_screen::@2 + //SEG144 init_screen::@2 b2: - //SEG146 [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG145 [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (COLS),y - //SEG147 [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG146 [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #1 sta (COLS),y - //SEG148 [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG147 [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #2 sta (COLS),y - //SEG149 [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG148 [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #3 sta (COLS),y - //SEG150 [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG149 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc COLS @@ -1639,46 +1625,46 @@ init_screen: { bcc !+ inc COLS+1 !: - //SEG151 [76] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuz1=_inc_vbuz1 + //SEG150 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuz1=_inc_vbuz1 inc m - //SEG152 [77] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG151 [76] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$19 cmp m bne b2_from_b2 jmp breturn - //SEG153 init_screen::@return + //SEG152 init_screen::@return breturn: - //SEG154 [78] return + //SEG153 [77] return rts } -//SEG155 print_cls +//SEG154 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $15 - //SEG156 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG155 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG157 [80] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG156 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_screen sta sc+1 jmp b1 - //SEG158 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG157 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG159 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG158 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG160 print_cls::@1 + //SEG159 print_cls::@1 b1: - //SEG161 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG160 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG162 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG161 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG163 [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG162 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_screen+$3e8 bne b1_from_b1 @@ -1686,23 +1672,28 @@ print_cls: { cmp #(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } @@ -1710,109 +1701,109 @@ print_cls: { REGISTER UPLIFT POTENTIAL REGISTERS -Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a +Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::k#2 main::k#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a -Statement [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:3 [ main::i#2 main::at#2 ] ) always clobbers reg byte a +Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] ) always clobbers reg byte a +Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ main::i#2 main::i#1 ] -Statement [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a -Statement [19] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:3 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a -Statement [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a +Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a +Statement [18] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a +Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ main::j#2 main::j#1 ] -Statement [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a +Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ print_byte_at::b#0 ] -Statement [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:3::print_sbyte_at:10::print_char_at:38 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:38 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:38 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_char_at:45 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:45 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:45 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_byte_at:42::print_char_at:53 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:18::print_byte_at:42::print_char_at:53 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:29::print_byte_at:42::print_char_at:53 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:10::print_byte_at:42::print_char_at:57 [ main::k#2 main::at#4 ] main:3::print_sbyte_at:18::print_byte_at:42::print_char_at:57 [ main::i#2 main::at#2 ] main:3::print_sbyte_at:29::print_byte_at:42::print_char_at:57 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte y +Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a +Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::k#2 main::k#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ main::j#2 main::j#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ print_byte_at::b#0 ] -Statement [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Statement [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ print_byte_at::$2 ] Statement asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:7 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:10 [ main::j#2 main::j#1 ] -Statement [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 [ init_screen::l#2 ] ( main:3::init_screen:6 [ init_screen::l#2 ] ) always clobbers reg byte a +Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ init_screen::l#2 init_screen::l#1 ] -Statement [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ init_screen::m#2 init_screen::m#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ init_screen::m#2 init_screen::m#1 ] -Statement [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a -Statement [81] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:65 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:65 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a -Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a -Statement [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:3 [ main::i#2 main::at#2 ] ) always clobbers reg byte a -Statement [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y -Statement [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a -Statement [19] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:3 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a -Statement [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a -Statement [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y -Statement [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y +Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a +Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::init_screen:5::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::init_screen:5::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a +Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] ) always clobbers reg byte a +Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] ) always clobbers reg byte a +Statement [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y +Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a +Statement [18] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a +Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a +Statement [21] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y +Statement [22] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ fmul8::a#0 ] -Statement [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a -Statement [31] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a -Statement [33] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:3 [ main::at#2 main::i#1 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:3::print_sbyte_at:10::print_char_at:38 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:38 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:38 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_char_at:45 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:45 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:45 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_byte_at:42::print_char_at:53 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:18::print_byte_at:42::print_char_at:53 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:29::print_byte_at:42::print_char_at:53 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:10::print_byte_at:42::print_char_at:57 [ main::k#2 main::at#4 ] main:3::print_sbyte_at:18::print_byte_at:42::print_char_at:57 [ main::i#2 main::at#2 ] main:3::print_sbyte_at:29::print_byte_at:42::print_char_at:57 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a reg byte y -Statement [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a +Statement [30] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:2 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a +Statement [32] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:2 [ main::at#2 main::i#1 ] ) always clobbers reg byte a +Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a +Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a reg byte y +Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a Statement asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } always clobbers reg byte a reg byte x -Statement [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 [ init_screen::l#2 ] ( main:3::init_screen:6 [ init_screen::l#2 ] ) always clobbers reg byte a -Statement [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a -Statement [81] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:65 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:65 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a -Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a -Statement [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:3 [ main::i#2 main::at#2 ] ) always clobbers reg byte a -Statement [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y -Statement [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:3 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a -Statement [19] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:3 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a -Statement [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a -Statement [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y -Statement [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y -Statement [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a -Statement [31] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a -Statement [33] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:3 [ main::at#2 main::i#1 ] ) always clobbers reg byte a -Statement [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a -Statement [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a -Statement [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a -Statement [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:3::print_sbyte_at:10 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:18 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:3::print_sbyte_at:29 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a -Statement [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:3::print_sbyte_at:10::print_char_at:38 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:38 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:38 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_char_at:45 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:18::print_char_at:45 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:29::print_char_at:45 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:3::print_sbyte_at:10::print_byte_at:42::print_char_at:53 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:18::print_byte_at:42::print_char_at:53 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:29::print_byte_at:42::print_char_at:53 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:3::print_sbyte_at:10::print_byte_at:42::print_char_at:57 [ main::k#2 main::at#4 ] main:3::print_sbyte_at:18::print_byte_at:42::print_char_at:57 [ main::i#2 main::at#2 ] main:3::print_sbyte_at:29::print_byte_at:42::print_char_at:57 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a reg byte y -Statement [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a -Statement [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a -Statement [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a -Statement [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:3::print_sbyte_at:10::print_byte_at:42 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:18::print_byte_at:42 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:3::print_sbyte_at:29::print_byte_at:42 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] ) always clobbers reg byte a +Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a +Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::init_screen:5::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::init_screen:5::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:2 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a +Statement [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 [ main::k#2 main::at#1 ] ( main:2 [ main::k#2 main::at#1 ] ) always clobbers reg byte a +Statement [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 [ main::i#2 main::at#2 ] ( main:2 [ main::i#2 main::at#2 ] ) always clobbers reg byte a +Statement [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 ] ) always clobbers reg byte y +Statement [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ( main:2 [ main::i#2 main::at#2 print_sbyte_at::b#2 print_sbyte_at::at#1 ] ) always clobbers reg byte a +Statement [18] (byte*~) main::at#12 ← (byte*) main::at#2 [ main::i#2 main::at#2 main::at#12 ] ( main:2 [ main::i#2 main::at#2 main::at#12 ] ) always clobbers reg byte a +Statement [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a +Statement [21] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 ] ) always clobbers reg byte y +Statement [22] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 fmul8::a#0 fmul8::b#0 ] ) always clobbers reg byte y +Statement [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ( main:2 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#3 print_sbyte_at::at#2 ] ) always clobbers reg byte a +Statement [30] if((byte) main::j#1!=(byte) 9) goto main::@3 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ( main:2 [ main::i#2 main::at#2 main::at#3 main::j#1 ] ) always clobbers reg byte a +Statement [32] if((byte) main::i#1!=(byte) 9) goto main::@2 [ main::at#2 main::i#1 ] ( main:2 [ main::at#2 main::i#1 ] ) always clobbers reg byte a +Statement [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 [ print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 [ print_sbyte_at::at#3 print_sbyte_at::b#0 ] ( main:2::print_sbyte_at:9 [ main::k#2 main::at#4 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:17 [ main::i#2 main::at#2 print_sbyte_at::at#3 print_sbyte_at::b#0 ] main:2::print_sbyte_at:28 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::at#3 print_sbyte_at::b#0 ] ) always clobbers reg byte a +Statement [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::print_sbyte_at:9::print_char_at:37 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:37 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:37 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_char_at:44 [ main::k#2 main::at#4 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:17::print_char_at:44 [ main::i#2 main::at#2 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:28::print_char_at:44 [ main::i#2 main::at#2 main::j#2 main::at#3 print_sbyte_at::b#4 print_sbyte_at::at#3 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:52 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:52 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_sbyte_at:9::print_byte_at:41::print_char_at:56 [ main::k#2 main::at#4 ] main:2::print_sbyte_at:17::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41::print_char_at:56 [ main::i#2 main::at#2 main::j#2 main::at#3 ] ) always clobbers reg byte a reg byte y +Statement [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a +Statement [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::print_sbyte_at:9::print_byte_at:41 [ main::k#2 main::at#4 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:17::print_byte_at:41 [ main::i#2 main::at#2 print_char_at::at#3 print_byte_at::$2 ] main:2::print_sbyte_at:28::print_byte_at:41 [ main::i#2 main::at#2 main::j#2 main::at#3 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a Statement asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } always clobbers reg byte a reg byte x -Statement [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 [ init_screen::l#2 ] ( main:3::init_screen:6 [ init_screen::l#2 ] ) always clobbers reg byte a -Statement [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a -Statement [81] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:65 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:65 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 [ init_screen::l#2 ] ( main:2::init_screen:5 [ init_screen::l#2 ] ) always clobbers reg byte a +Statement [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:2::init_screen:5 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y +Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:2::init_screen:5 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a +Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::init_screen:5::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::init_screen:5::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::k#2 main::k#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ main::at#4 main::at#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ main::at_line#2 main::at#2 ] : zp ZP_WORD:5 , @@ -1847,25 +1838,25 @@ Uplift Scope [print_cls] 33: zp ZP_WORD:21 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_byte_at] 4: zp ZP_BYTE:30 [ print_byte_at::$0 ] 2: zp ZP_BYTE:31 [ print_byte_at::$2 ] 1: zp ZP_BYTE:27 [ print_byte_at::b#0 ] 1: zp ZP_WORD:28 [ print_byte_at::at#0 ] Uplift Scope [] -Uplifting [main] best 18649 combination zp ZP_WORD:8 [ main::at#6 main::at#3 main::at#12 ] reg byte a [ main::r#0 ] zp ZP_BYTE:10 [ main::j#2 main::j#1 ] zp ZP_WORD:5 [ main::at_line#2 main::at#2 ] zp ZP_BYTE:7 [ main::i#2 main::i#1 ] reg byte x [ main::k#2 main::k#1 ] zp ZP_WORD:3 [ main::at#4 main::at#1 ] -Uplifting [print_sbyte_at] best 18649 combination zp ZP_WORD:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Uplifting [fmul8] best 17142 combination reg byte a [ fmul8::return#0 ] reg byte a [ fmul8::a#0 ] reg byte x [ fmul8::b#0 ] reg byte a [ fmul8::return#1 ] +Uplifting [main] best 13502 combination zp ZP_WORD:8 [ main::at#6 main::at#3 main::at#12 ] reg byte a [ main::r#0 ] zp ZP_BYTE:10 [ main::j#2 main::j#1 ] zp ZP_WORD:5 [ main::at_line#2 main::at#2 ] zp ZP_BYTE:7 [ main::i#2 main::i#1 ] reg byte x [ main::k#2 main::k#1 ] zp ZP_WORD:3 [ main::at#4 main::at#1 ] +Uplifting [print_sbyte_at] best 13502 combination zp ZP_WORD:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] +Uplifting [fmul8] best 11995 combination reg byte a [ fmul8::return#0 ] reg byte a [ fmul8::a#0 ] reg byte x [ fmul8::b#0 ] reg byte a [ fmul8::return#1 ] Limited combination testing to 100 combinations of 192 possible. -Uplifting [init_screen] best 16932 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp ZP_WORD:18 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ] -Uplifting [print_char_at] best 16932 combination zp ZP_WORD:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] zp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplifting [print_cls] best 16932 combination zp ZP_WORD:21 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte_at] best 16924 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp ZP_BYTE:27 [ print_byte_at::b#0 ] zp ZP_WORD:28 [ print_byte_at::at#0 ] -Uplifting [] best 16924 combination +Uplifting [init_screen] best 11785 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp ZP_WORD:18 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ] +Uplifting [print_char_at] best 11785 combination zp ZP_WORD:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] zp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplifting [print_cls] best 11785 combination zp ZP_WORD:21 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte_at] best 11777 combination reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] zp ZP_BYTE:27 [ print_byte_at::b#0 ] zp ZP_WORD:28 [ print_byte_at::at#0 ] +Uplifting [] best 11777 combination Attempting to uplift remaining variables inzp ZP_BYTE:10 [ main::j#2 main::j#1 ] -Uplifting [main] best 16924 combination zp ZP_BYTE:10 [ main::j#2 main::j#1 ] +Uplifting [main] best 11777 combination zp ZP_BYTE:10 [ main::j#2 main::j#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] -Uplifting [print_sbyte_at] best 16924 combination zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] +Uplifting [print_sbyte_at] best 11777 combination zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ main::i#2 main::i#1 ] -Uplifting [main] best 16924 combination zp ZP_BYTE:7 [ main::i#2 main::i#1 ] +Uplifting [main] best 11777 combination zp ZP_BYTE:7 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] -Uplifting [print_char_at] best 16924 combination zp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] +Uplifting [print_char_at] best 11777 combination zp ZP_BYTE:14 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ print_byte_at::b#0 ] -Uplifting [print_byte_at] best 16924 combination zp ZP_BYTE:27 [ print_byte_at::b#0 ] +Uplifting [print_byte_at] best 11777 combination zp ZP_BYTE:27 [ print_byte_at::b#0 ] Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 ] ] with [ zp ZP_WORD:15 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ print_sbyte_at::at#3 print_sbyte_at::at#0 print_sbyte_at::at#2 print_sbyte_at::at#1 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] with [ zp ZP_WORD:28 [ print_byte_at::at#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:13 [ print_sbyte_at::b#6 print_sbyte_at::b#0 print_sbyte_at::b#4 print_sbyte_at::b#1 print_sbyte_at::b#3 print_sbyte_at::b#2 ] ] with [ zp ZP_BYTE:27 [ print_byte_at::b#0 ] ] - score: 1 @@ -1899,28 +1890,23 @@ ASSEMBLER BEFORE OPTIMIZATION .label ap = $fd .label bp = $fe .label cp = $ff - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2000 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2200 //SEG3 @begin bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} -//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} -//SEG7 [3] call main -//SEG8 [5] phi from @1 to main [phi:@1->main] +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] main_from_b1: jsr main -//SEG9 [4] phi from @1 to @end [phi:@1->@end] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG10 @end +//SEG9 @end bend: -//SEG11 main +//SEG10 main main: { .label at = 2 .label at_2 = 4 @@ -1930,45 +1916,45 @@ main: { .label at_line = 4 .label at_6 = 7 .label at_12 = 7 - //SEG12 [6] call init_screen - //SEG13 [64] phi from main to init_screen [phi:main->init_screen] + //SEG11 [5] call init_screen + //SEG12 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen - //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG15 [7] phi (byte*) main::at#4 = (byte*) 1024+(byte) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) main::at#4 = (byte*) 1024+(byte) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400+4 sta at lda #>$400+4 sta at+1 - //SEG16 [7] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG15 [6] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG17 [7] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG16 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG18 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG19 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG17 [6] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG18 [6] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@5->main::@1#1] -- register_copy jmp b1 - //SEG20 main::@1 + //SEG19 main::@1 b1: - //SEG21 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx + //SEG20 [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx lda vals,x sta print_sbyte_at.b - //SEG22 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 + //SEG21 [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG23 [10] call print_sbyte_at - //SEG24 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] + //SEG22 [9] call print_sbyte_at + //SEG23 [34] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] print_sbyte_at_from_b1: - //SEG25 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy - //SEG26 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy + //SEG24 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy + //SEG25 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b5 - //SEG27 main::@5 + //SEG26 main::@5 b5: - //SEG28 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG27 [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 lda #4 clc adc at @@ -1976,30 +1962,30 @@ main: { bcc !+ inc at+1 !: - //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG28 [11] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG30 [13] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG29 [12] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b1_from_b5 - //SEG31 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG30 [13] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG32 [14] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 + //SEG31 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG33 [14] phi (byte*) main::at_line#2 = (byte*) 1024 [phi:main::@5->main::@2#1] -- pbuz1=pbuc1 + //SEG32 [13] phi (byte*) main::at_line#2 = (byte*) 1024 [phi:main::@5->main::@2#1] -- pbuz1=pbuc1 lda #<$400 sta at_line lda #>$400 sta at_line+1 jmp b2 - //SEG34 [14] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG33 [13] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG35 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy - //SEG36 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@4->main::@2#1] -- register_copy + //SEG34 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG35 [13] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@4->main::@2#1] -- register_copy jmp b2 - //SEG37 main::@2 + //SEG36 main::@2 b2: - //SEG38 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG37 [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc at_2 @@ -2007,44 +1993,44 @@ main: { bcc !+ inc at_2+1 !: - //SEG39 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG38 [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta print_sbyte_at.b - //SEG40 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG39 [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta print_sbyte_at.at lda at_2+1 sta print_sbyte_at.at+1 - //SEG41 [18] call print_sbyte_at - //SEG42 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] + //SEG40 [17] call print_sbyte_at + //SEG41 [34] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] print_sbyte_at_from_b2: - //SEG43 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy - //SEG44 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy + //SEG42 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy + //SEG43 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b6 - //SEG45 main::@6 + //SEG44 main::@6 b6: - //SEG46 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG45 [18] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta at_12 lda at_2+1 sta at_12+1 - //SEG47 [20] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG46 [19] phi from main::@6 to main::@3 [phi:main::@6->main::@3] b3_from_b6: - //SEG48 [20] phi (byte) main::j#2 = (byte) 0 [phi:main::@6->main::@3#0] -- vbuz1=vbuc1 + //SEG47 [19] phi (byte) main::j#2 = (byte) 0 [phi:main::@6->main::@3#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG49 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@6->main::@3#1] -- register_copy + //SEG48 [19] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@6->main::@3#1] -- register_copy jmp b3 - //SEG50 [20] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG49 [19] phi from main::@8 to main::@3 [phi:main::@8->main::@3] b3_from_b8: - //SEG51 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@3#0] -- register_copy - //SEG52 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@8->main::@3#1] -- register_copy + //SEG50 [19] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@3#0] -- register_copy + //SEG51 [19] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@8->main::@3#1] -- register_copy jmp b3 - //SEG53 main::@3 + //SEG52 main::@3 b3: - //SEG54 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG53 [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 lda #4 clc adc at_3 @@ -2052,112 +2038,112 @@ main: { bcc !+ inc at_3+1 !: - //SEG55 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 + //SEG54 [21] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 ldy i lda vals,y - //SEG56 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG55 [22] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy j ldx vals,y - //SEG57 [24] call fmul8 + //SEG56 [23] call fmul8 jsr fmul8 - //SEG58 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 + //SEG57 [24] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 jmp b7 - //SEG59 main::@7 + //SEG58 main::@7 b7: - //SEG60 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 - //SEG61 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa + //SEG59 [25] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 + //SEG60 [26] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa sta print_sbyte_at.b - //SEG62 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 + //SEG61 [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 lda at_3 sta print_sbyte_at.at lda at_3+1 sta print_sbyte_at.at+1 - //SEG63 [29] call print_sbyte_at - //SEG64 [35] phi from main::@7 to print_sbyte_at [phi:main::@7->print_sbyte_at] + //SEG62 [28] call print_sbyte_at + //SEG63 [34] phi from main::@7 to print_sbyte_at [phi:main::@7->print_sbyte_at] print_sbyte_at_from_b7: - //SEG65 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@7->print_sbyte_at#0] -- register_copy - //SEG66 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@7->print_sbyte_at#1] -- register_copy + //SEG64 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@7->print_sbyte_at#0] -- register_copy + //SEG65 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at jmp b8 - //SEG67 main::@8 + //SEG66 main::@8 b8: - //SEG68 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG67 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG69 [31] if((byte) main::j#1!=(byte) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [30] if((byte) main::j#1!=(byte) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp j bne b3_from_b8 jmp b4 - //SEG70 main::@4 + //SEG69 main::@4 b4: - //SEG71 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG70 [31] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG72 [33] if((byte) main::i#1!=(byte) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG71 [32] if((byte) main::i#1!=(byte) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp i bne b2_from_b4 jmp breturn - //SEG73 main::@return + //SEG72 main::@return breturn: - //SEG74 [34] return + //SEG73 [33] return rts } -//SEG75 print_sbyte_at +//SEG74 print_sbyte_at // Print a signed byte as hex at a specific screen position // print_sbyte_at(signed byte zeropage($c) b, byte* zeropage($a) at) print_sbyte_at: { .label b = $c .label at = $a - //SEG76 [36] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG75 [35] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 jmp b3 - //SEG77 print_sbyte_at::@3 + //SEG76 print_sbyte_at::@3 b3: - //SEG78 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 - //SEG79 [38] call print_char_at - //SEG80 [47] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG77 [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 + //SEG78 [37] call print_char_at + //SEG79 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] print_char_at_from_b3: - //SEG81 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG82 [47] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG80 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG81 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG83 [39] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] + //SEG82 [38] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] b2_from_b3: b2_from_b4: - //SEG84 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy + //SEG83 [38] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy jmp b2 - //SEG85 print_sbyte_at::@2 + //SEG84 print_sbyte_at::@2 b2: - //SEG86 [40] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 - //SEG87 [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG85 [39] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 + //SEG86 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG88 [42] call print_byte_at + //SEG87 [41] call print_byte_at jsr print_byte_at jmp breturn - //SEG89 print_sbyte_at::@return + //SEG88 print_sbyte_at::@return breturn: - //SEG90 [43] return + //SEG89 [42] return rts - //SEG91 print_sbyte_at::@1 + //SEG90 print_sbyte_at::@1 b1: - //SEG92 [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 - //SEG93 [45] call print_char_at - //SEG94 [47] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG91 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 + //SEG92 [44] call print_char_at + //SEG93 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] print_char_at_from_b1: - //SEG95 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG96 [47] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG94 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG95 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at jmp b4 - //SEG97 print_sbyte_at::@4 + //SEG96 print_sbyte_at::@4 b4: - //SEG98 [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 + //SEG97 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -2165,81 +2151,81 @@ print_sbyte_at: { sta b jmp b2_from_b4 } -//SEG99 print_char_at +//SEG98 print_char_at // Print a single char // print_char_at(byte zeropage($d) ch, byte* zeropage($a) at) print_char_at: { .label at = $a .label ch = $d - //SEG100 [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG99 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y jmp breturn - //SEG101 print_char_at::@return + //SEG100 print_char_at::@return breturn: - //SEG102 [49] return + //SEG101 [48] return rts } -//SEG103 print_byte_at +//SEG102 print_byte_at // Print a byte as HEX at a specific position // print_byte_at(byte zeropage($c) b, byte* zeropage($a) at) print_byte_at: { .label b = $c .label at = $a - //SEG104 [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + //SEG103 [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG105 [51] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG104 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda print_hextab,y sta print_char_at.ch - //SEG106 [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG107 [53] call print_char_at - //SEG108 [47] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG105 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG106 [52] call print_char_at + //SEG107 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] print_char_at_from_print_byte_at: - //SEG109 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG110 [47] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG108 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG109 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at jmp b1 - //SEG111 print_byte_at::@1 + //SEG110 print_byte_at::@1 b1: - //SEG112 [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 + //SEG111 [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 lda #$f and b tay - //SEG113 [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG112 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG114 [56] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG113 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy lda print_hextab,y sta print_char_at.ch - //SEG115 [57] call print_char_at - //SEG116 [47] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG114 [56] call print_char_at + //SEG115 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] print_char_at_from_b1: - //SEG117 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG118 [47] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG116 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG117 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at jmp breturn - //SEG119 print_byte_at::@return + //SEG118 print_byte_at::@return breturn: - //SEG120 [58] return + //SEG119 [57] return rts } -//SEG121 fmul8 +//SEG120 fmul8 // fmul8(signed byte register(A) a, signed byte register(X) b) fmul8: { - //SEG122 [59] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa + //SEG121 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa sta ap - //SEG123 [60] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx + //SEG122 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx txa sta bp - //SEG124 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } + //SEG123 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } lda ap sta A1+1 eor #$ff @@ -2251,75 +2237,75 @@ fmul8: { A2: sbc mulf_sqr2,x sta cp - //SEG125 [62] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 + //SEG124 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 lda cp jmp breturn - //SEG126 fmul8::@return + //SEG125 fmul8::@return breturn: - //SEG127 [63] return + //SEG126 [62] return rts } -//SEG128 init_screen +//SEG127 init_screen init_screen: { .const WHITE = 1 .label COLS = $e - //SEG129 [65] call print_cls - //SEG130 [79] phi from init_screen to print_cls [phi:init_screen->print_cls] + //SEG128 [64] call print_cls + //SEG129 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] print_cls_from_init_screen: jsr print_cls - //SEG131 [66] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG130 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG132 [66] phi (byte) init_screen::l#2 = (byte) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 + //SEG131 [65] phi (byte) init_screen::l#2 = (byte) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG133 [66] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG132 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG134 [66] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG133 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG135 init_screen::@1 + //SEG134 init_screen::@1 b1: - //SEG136 [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG135 [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #WHITE sta $d800,x - //SEG137 [68] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx + //SEG136 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx inx - //SEG138 [69] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG137 [68] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b1 - //SEG139 [70] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG138 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG140 [70] phi (byte) init_screen::m#2 = (byte) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 + //SEG139 [69] phi (byte) init_screen::m#2 = (byte) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG141 [70] phi (byte*) init_screen::COLS#3 = (byte*) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 + //SEG140 [69] phi (byte*) init_screen::COLS#3 = (byte*) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 lda #<$d800 sta COLS lda #>$d800 sta COLS+1 jmp b2 - //SEG142 [70] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG141 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG143 [70] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG144 [70] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy + //SEG142 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG143 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy jmp b2 - //SEG145 init_screen::@2 + //SEG144 init_screen::@2 b2: - //SEG146 [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG145 [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (COLS),y - //SEG147 [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG146 [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #1 sta (COLS),y - //SEG148 [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG147 [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #2 sta (COLS),y - //SEG149 [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG148 [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 lda #WHITE ldy #3 sta (COLS),y - //SEG150 [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG149 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc COLS @@ -2327,45 +2313,45 @@ init_screen: { bcc !+ inc COLS+1 !: - //SEG151 [76] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx + //SEG150 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx inx - //SEG152 [77] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG151 [76] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$19 bne b2_from_b2 jmp breturn - //SEG153 init_screen::@return + //SEG152 init_screen::@return breturn: - //SEG154 [78] return + //SEG153 [77] return rts } -//SEG155 print_cls +//SEG154 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $10 - //SEG156 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG155 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG157 [80] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG156 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_screen sta sc+1 jmp b1 - //SEG158 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG157 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG159 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG158 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG160 print_cls::@1 + //SEG159 print_cls::@1 b1: - //SEG161 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG160 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG162 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG161 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG163 [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG162 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_screen+$3e8 bne b1_from_b1 @@ -2373,23 +2359,28 @@ print_cls: { cmp #(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } @@ -2435,6 +2426,7 @@ Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 +Removing instruction b1_from_bbegin: Removing instruction b1: Removing instruction main_from_b1: Removing instruction bend_from_b1: @@ -2558,10 +2550,20 @@ FINAL SYMBOL TABLE (byte) main::k#2 reg byte x 6.6000000000000005 (signed byte) main::r (signed byte) main::r#0 reg byte a 202.0 -(byte*) mulf_sqr1 -(const byte*) mulf_sqr1#0 mulf_sqr1 = (byte*) 8192 -(byte*) mulf_sqr2 -(const byte*) mulf_sqr2#0 mulf_sqr2 = (byte*) 8704 +(byte[$200]) mulf_sqr1 +(const byte[$200]) mulf_sqr1#0 mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((i*i)/256) } + .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } + .if(i>351) { .byte round(((512-i)*(512-i))/256) } + } + }} +(byte[$200]) mulf_sqr2 +(const byte[$200]) mulf_sqr2#0 mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } + .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } + .if(i>351) { .byte round(((i-511)*(i-511))/256) } + } + }} (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 @@ -2637,7 +2639,7 @@ reg byte a [ fmul8::return#1 ] FINAL ASSEMBLER -Score: 15124 +Score: 10004 //SEG0 File Comments // Seriously fast multiply 8-bit version (8bit*8bit=8bit) @@ -2657,20 +2659,14 @@ Score: 15124 .label ap = $fd .label bp = $fe .label cp = $ff - // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x). - // f(x) = >(( x * x )) - .label mulf_sqr1 = $2000 - // g(x) = >((( 1 - x ) * ( 1 - x ))) - .label mulf_sqr2 = $2200 //SEG3 @begin -//SEG4 @1 -//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} -//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} -//SEG7 [3] call main -//SEG8 [5] phi from @1 to main [phi:@1->main] -//SEG9 [4] phi from @1 to @end [phi:@1->@end] -//SEG10 @end -//SEG11 main +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [4] phi from @1 to main [phi:@1->main] +//SEG8 [3] phi from @1 to @end [phi:@1->@end] +//SEG9 @end +//SEG10 main main: { .label at = 2 .label at_2 = 4 @@ -2680,37 +2676,37 @@ main: { .label at_line = 4 .label at_6 = 7 .label at_12 = 7 - //SEG12 [6] call init_screen - //SEG13 [64] phi from main to init_screen [phi:main->init_screen] + //SEG11 [5] call init_screen + //SEG12 [63] phi from main to init_screen [phi:main->init_screen] jsr init_screen - //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] - //SEG15 [7] phi (byte*) main::at#4 = (byte*) 1024+(byte) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 [6] phi (byte*) main::at#4 = (byte*) 1024+(byte) 4 [phi:main->main::@1#0] -- pbuz1=pbuc1 lda #<$400+4 sta at lda #>$400+4 sta at+1 - //SEG16 [7] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + //SEG15 [6] phi (byte) main::k#2 = (byte) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG17 [7] phi from main::@5 to main::@1 [phi:main::@5->main::@1] - //SEG18 [7] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@5->main::@1#0] -- register_copy - //SEG19 [7] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@5->main::@1#1] -- register_copy - //SEG20 main::@1 + //SEG16 [6] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG17 [6] phi (byte*) main::at#4 = (byte*) main::at#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG18 [6] phi (byte) main::k#2 = (byte) main::k#1 [phi:main::@5->main::@1#1] -- register_copy + //SEG19 main::@1 b1: - //SEG21 [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx + //SEG20 [7] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) -- vbsz1=pbsc1_derefidx_vbuxx lda vals,x sta print_sbyte_at.b - //SEG22 [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 + //SEG21 [8] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 -- pbuz1=pbuz2 lda at sta print_sbyte_at.at lda at+1 sta print_sbyte_at.at+1 - //SEG23 [10] call print_sbyte_at - //SEG24 [35] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] - //SEG25 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy - //SEG26 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy + //SEG22 [9] call print_sbyte_at + //SEG23 [34] phi from main::@1 to print_sbyte_at [phi:main::@1->print_sbyte_at] + //SEG24 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#0 [phi:main::@1->print_sbyte_at#0] -- register_copy + //SEG25 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#1 [phi:main::@1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG27 main::@5 - //SEG28 [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG26 main::@5 + //SEG27 [10] (byte*) main::at#1 ← (byte*) main::at#4 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 lda #4 clc adc at @@ -2718,26 +2714,26 @@ main: { bcc !+ inc at+1 !: - //SEG29 [12] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx + //SEG28 [11] (byte) main::k#1 ← ++ (byte) main::k#2 -- vbuxx=_inc_vbuxx inx - //SEG30 [13] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG29 [12] if((byte) main::k#1!=(byte) 9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #9 bne b1 - //SEG31 [14] phi from main::@5 to main::@2 [phi:main::@5->main::@2] - //SEG32 [14] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 + //SEG30 [13] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG31 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@5->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG33 [14] phi (byte*) main::at_line#2 = (byte*) 1024 [phi:main::@5->main::@2#1] -- pbuz1=pbuc1 + //SEG32 [13] phi (byte*) main::at_line#2 = (byte*) 1024 [phi:main::@5->main::@2#1] -- pbuz1=pbuc1 lda #<$400 sta at_line lda #>$400 sta at_line+1 - //SEG34 [14] phi from main::@4 to main::@2 [phi:main::@4->main::@2] - //SEG35 [14] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy - //SEG36 [14] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@4->main::@2#1] -- register_copy - //SEG37 main::@2 + //SEG33 [13] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG34 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@2#0] -- register_copy + //SEG35 [13] phi (byte*) main::at_line#2 = (byte*) main::at#2 [phi:main::@4->main::@2#1] -- register_copy + //SEG36 main::@2 b2: - //SEG38 [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG37 [14] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc at_2 @@ -2745,37 +2741,37 @@ main: { bcc !+ inc at_2+1 !: - //SEG39 [16] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG38 [15] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda vals,y sta print_sbyte_at.b - //SEG40 [17] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG39 [16] (byte*) print_sbyte_at::at#1 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta print_sbyte_at.at lda at_2+1 sta print_sbyte_at.at+1 - //SEG41 [18] call print_sbyte_at - //SEG42 [35] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] - //SEG43 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy - //SEG44 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy + //SEG40 [17] call print_sbyte_at + //SEG41 [34] phi from main::@2 to print_sbyte_at [phi:main::@2->print_sbyte_at] + //SEG42 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#1 [phi:main::@2->print_sbyte_at#0] -- register_copy + //SEG43 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#2 [phi:main::@2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG45 main::@6 - //SEG46 [19] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 + //SEG44 main::@6 + //SEG45 [18] (byte*~) main::at#12 ← (byte*) main::at#2 -- pbuz1=pbuz2 lda at_2 sta at_12 lda at_2+1 sta at_12+1 - //SEG47 [20] phi from main::@6 to main::@3 [phi:main::@6->main::@3] - //SEG48 [20] phi (byte) main::j#2 = (byte) 0 [phi:main::@6->main::@3#0] -- vbuz1=vbuc1 + //SEG46 [19] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG47 [19] phi (byte) main::j#2 = (byte) 0 [phi:main::@6->main::@3#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG49 [20] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@6->main::@3#1] -- register_copy - //SEG50 [20] phi from main::@8 to main::@3 [phi:main::@8->main::@3] - //SEG51 [20] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@3#0] -- register_copy - //SEG52 [20] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@8->main::@3#1] -- register_copy - //SEG53 main::@3 + //SEG48 [19] phi (byte*) main::at#6 = (byte*~) main::at#12 [phi:main::@6->main::@3#1] -- register_copy + //SEG49 [19] phi from main::@8 to main::@3 [phi:main::@8->main::@3] + //SEG50 [19] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@8->main::@3#0] -- register_copy + //SEG51 [19] phi (byte*) main::at#6 = (byte*) main::at#3 [phi:main::@8->main::@3#1] -- register_copy + //SEG52 main::@3 b3: - //SEG54 [21] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 + //SEG53 [20] (byte*) main::at#3 ← (byte*) main::at#6 + (byte) 4 -- pbuz1=pbuz1_plus_vbuc1 lda #4 clc adc at_3 @@ -2783,91 +2779,91 @@ main: { bcc !+ inc at_3+1 !: - //SEG55 [22] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 + //SEG54 [21] (signed byte) fmul8::a#0 ← *((const signed byte[]) vals#0 + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1 ldy i lda vals,y - //SEG56 [23] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1 + //SEG55 [22] (signed byte) fmul8::b#0 ← *((const signed byte[]) vals#0 + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1 ldy j ldx vals,y - //SEG57 [24] call fmul8 + //SEG56 [23] call fmul8 jsr fmul8 - //SEG58 [25] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 - //SEG59 main::@7 - //SEG60 [26] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 - //SEG61 [27] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa + //SEG57 [24] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1 + //SEG58 main::@7 + //SEG59 [25] (signed byte) main::r#0 ← (signed byte) fmul8::return#0 + //SEG60 [26] (signed byte) print_sbyte_at::b#3 ← (signed byte) main::r#0 -- vbsz1=vbsaa sta print_sbyte_at.b - //SEG62 [28] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 + //SEG61 [27] (byte*) print_sbyte_at::at#2 ← (byte*) main::at#3 -- pbuz1=pbuz2 lda at_3 sta print_sbyte_at.at lda at_3+1 sta print_sbyte_at.at+1 - //SEG63 [29] call print_sbyte_at - //SEG64 [35] phi from main::@7 to print_sbyte_at [phi:main::@7->print_sbyte_at] - //SEG65 [35] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@7->print_sbyte_at#0] -- register_copy - //SEG66 [35] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@7->print_sbyte_at#1] -- register_copy + //SEG62 [28] call print_sbyte_at + //SEG63 [34] phi from main::@7 to print_sbyte_at [phi:main::@7->print_sbyte_at] + //SEG64 [34] phi (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#2 [phi:main::@7->print_sbyte_at#0] -- register_copy + //SEG65 [34] phi (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#3 [phi:main::@7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at - //SEG67 main::@8 - //SEG68 [30] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG66 main::@8 + //SEG67 [29] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG69 [31] if((byte) main::j#1!=(byte) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG68 [30] if((byte) main::j#1!=(byte) 9) goto main::@3 -- vbuz1_neq_vbuc1_then_la1 lda #9 cmp j bne b3 - //SEG70 main::@4 - //SEG71 [32] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG69 main::@4 + //SEG70 [31] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG72 [33] if((byte) main::i#1!=(byte) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG71 [32] if((byte) main::i#1!=(byte) 9) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 cmp i bne b2 - //SEG73 main::@return - //SEG74 [34] return + //SEG72 main::@return + //SEG73 [33] return rts } -//SEG75 print_sbyte_at +//SEG74 print_sbyte_at // Print a signed byte as hex at a specific screen position // print_sbyte_at(signed byte zeropage($c) b, byte* zeropage($a) at) print_sbyte_at: { .label b = $c .label at = $a - //SEG76 [36] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 + //SEG75 [35] if((signed byte) print_sbyte_at::b#4<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG77 print_sbyte_at::@3 - //SEG78 [37] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 - //SEG79 [38] call print_char_at - //SEG80 [47] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] - //SEG81 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy - //SEG82 [47] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 + //SEG76 print_sbyte_at::@3 + //SEG77 [36] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#3 + //SEG78 [37] call print_char_at + //SEG79 [46] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at] + //SEG80 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy + //SEG81 [46] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 lda #' ' sta print_char_at.ch jsr print_char_at - //SEG83 [39] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] - //SEG84 [39] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy - //SEG85 print_sbyte_at::@2 + //SEG82 [38] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2] + //SEG83 [38] phi (signed byte) print_sbyte_at::b#6 = (signed byte) print_sbyte_at::b#4 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy + //SEG84 print_sbyte_at::@2 b2: - //SEG86 [40] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 - //SEG87 [41] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG85 [39] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#6 + //SEG86 [40] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#3 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_byte_at.at bne !+ inc print_byte_at.at+1 !: - //SEG88 [42] call print_byte_at + //SEG87 [41] call print_byte_at jsr print_byte_at - //SEG89 print_sbyte_at::@return - //SEG90 [43] return + //SEG88 print_sbyte_at::@return + //SEG89 [42] return rts - //SEG91 print_sbyte_at::@1 + //SEG90 print_sbyte_at::@1 b1: - //SEG92 [44] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 - //SEG93 [45] call print_char_at - //SEG94 [47] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] - //SEG95 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy - //SEG96 [47] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 + //SEG91 [43] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#3 + //SEG92 [44] call print_char_at + //SEG93 [46] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at] + //SEG94 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy + //SEG95 [46] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 lda #'-' sta print_char_at.ch jsr print_char_at - //SEG97 print_sbyte_at::@4 - //SEG98 [46] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 + //SEG96 print_sbyte_at::@4 + //SEG97 [45] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#4 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -2875,73 +2871,73 @@ print_sbyte_at: { sta b jmp b2 } -//SEG99 print_char_at +//SEG98 print_char_at // Print a single char // print_char_at(byte zeropage($d) ch, byte* zeropage($a) at) print_char_at: { .label at = $a .label ch = $d - //SEG100 [48] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 + //SEG99 [47] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (at),y - //SEG101 print_char_at::@return - //SEG102 [49] return + //SEG100 print_char_at::@return + //SEG101 [48] return rts } -//SEG103 print_byte_at +//SEG102 print_byte_at // Print a byte as HEX at a specific position // print_byte_at(byte zeropage($c) b, byte* zeropage($a) at) print_byte_at: { .label b = $c .label at = $a - //SEG104 [50] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + //SEG103 [49] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG105 [51] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG104 [50] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda print_hextab,y sta print_char_at.ch - //SEG106 [52] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 - //SEG107 [53] call print_char_at - //SEG108 [47] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] - //SEG109 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy - //SEG110 [47] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy + //SEG105 [51] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 + //SEG106 [52] call print_char_at + //SEG107 [46] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + //SEG108 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy + //SEG109 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy jsr print_char_at - //SEG111 print_byte_at::@1 - //SEG112 [54] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 + //SEG110 print_byte_at::@1 + //SEG111 [53] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 lda #$f and b tay - //SEG113 [55] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 + //SEG112 [54] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 inc print_char_at.at bne !+ inc print_char_at.at+1 !: - //SEG114 [56] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG113 [55] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuyy lda print_hextab,y sta print_char_at.ch - //SEG115 [57] call print_char_at - //SEG116 [47] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] - //SEG117 [47] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy - //SEG118 [47] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + //SEG114 [56] call print_char_at + //SEG115 [46] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + //SEG116 [46] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + //SEG117 [46] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy jsr print_char_at - //SEG119 print_byte_at::@return - //SEG120 [58] return + //SEG118 print_byte_at::@return + //SEG119 [57] return rts } -//SEG121 fmul8 +//SEG120 fmul8 // fmul8(signed byte register(A) a, signed byte register(X) b) fmul8: { - //SEG122 [59] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa + //SEG121 [58] *((const signed byte*) ap#0) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa sta ap - //SEG123 [60] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx + //SEG122 [59] *((const signed byte*) bp#0) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx txa sta bp - //SEG124 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } + //SEG123 asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp } lda ap sta A1+1 eor #$ff @@ -2953,60 +2949,60 @@ fmul8: { A2: sbc mulf_sqr2,x sta cp - //SEG125 [62] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 - //SEG126 fmul8::@return - //SEG127 [63] return + //SEG124 [61] (signed byte) fmul8::return#1 ← *((const signed byte*) cp#0) -- vbsaa=_deref_pbsc1 + //SEG125 fmul8::@return + //SEG126 [62] return rts } -//SEG128 init_screen +//SEG127 init_screen init_screen: { .const WHITE = 1 .label COLS = $e - //SEG129 [65] call print_cls - //SEG130 [79] phi from init_screen to print_cls [phi:init_screen->print_cls] + //SEG128 [64] call print_cls + //SEG129 [78] phi from init_screen to print_cls [phi:init_screen->print_cls] jsr print_cls - //SEG131 [66] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] - //SEG132 [66] phi (byte) init_screen::l#2 = (byte) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 + //SEG130 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG131 [65] phi (byte) init_screen::l#2 = (byte) 0 [phi:init_screen->init_screen::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG133 [66] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] - //SEG134 [66] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy - //SEG135 init_screen::@1 + //SEG132 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG133 [65] phi (byte) init_screen::l#2 = (byte) init_screen::l#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG134 init_screen::@1 b1: - //SEG136 [67] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG135 [66] *((byte*) 55296 + (byte) init_screen::l#2) ← (const byte) init_screen::WHITE#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #WHITE sta $d800,x - //SEG137 [68] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx + //SEG136 [67] (byte) init_screen::l#1 ← ++ (byte) init_screen::l#2 -- vbuxx=_inc_vbuxx inx - //SEG138 [69] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG137 [68] if((byte) init_screen::l#1!=(byte) $28) goto init_screen::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG139 [70] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] - //SEG140 [70] phi (byte) init_screen::m#2 = (byte) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 + //SEG138 [69] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG139 [69] phi (byte) init_screen::m#2 = (byte) 0 [phi:init_screen::@1->init_screen::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG141 [70] phi (byte*) init_screen::COLS#3 = (byte*) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 + //SEG140 [69] phi (byte*) init_screen::COLS#3 = (byte*) 55296 [phi:init_screen::@1->init_screen::@2#1] -- pbuz1=pbuc1 lda #<$d800 sta COLS lda #>$d800 sta COLS+1 - //SEG142 [70] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] - //SEG143 [70] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG144 [70] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy - //SEG145 init_screen::@2 + //SEG141 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG142 [69] phi (byte) init_screen::m#2 = (byte) init_screen::m#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG143 [69] phi (byte*) init_screen::COLS#3 = (byte*) init_screen::COLS#1 [phi:init_screen::@2->init_screen::@2#1] -- register_copy + //SEG144 init_screen::@2 b2: - //SEG146 [71] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG145 [70] *((byte*) init_screen::COLS#3) ← (const byte) init_screen::WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (COLS),y - //SEG147 [72] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG146 [71] *((byte*) init_screen::COLS#3 + (byte) 1) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #1 sta (COLS),y - //SEG148 [73] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG147 [72] *((byte*) init_screen::COLS#3 + (byte) 2) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #2 sta (COLS),y - //SEG149 [74] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 + //SEG148 [73] *((byte*) init_screen::COLS#3 + (byte) 3) ← (const byte) init_screen::WHITE#0 -- pbuz1_derefidx_vbuc1=vbuc2 ldy #3 sta (COLS),y - //SEG150 [75] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG149 [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc COLS @@ -3014,61 +3010,66 @@ init_screen: { bcc !+ inc COLS+1 !: - //SEG151 [76] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx + //SEG150 [75] (byte) init_screen::m#1 ← ++ (byte) init_screen::m#2 -- vbuxx=_inc_vbuxx inx - //SEG152 [77] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG151 [76] if((byte) init_screen::m#1!=(byte) $19) goto init_screen::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$19 bne b2 - //SEG153 init_screen::@return - //SEG154 [78] return + //SEG152 init_screen::@return + //SEG153 [77] return rts } -//SEG155 print_cls +//SEG154 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $10 - //SEG156 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG157 [80] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG155 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG156 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_screen sta sc+1 - //SEG158 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG159 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG160 print_cls::@1 + //SEG157 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG158 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG159 print_cls::@1 b1: - //SEG161 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG160 [80] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG162 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG161 [81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG163 [83] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG162 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_screen+$3e8 bne b1 lda sc cmp #(( x * x )) + .align $100 +mulf_sqr1: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } -.pc = mulf_sqr2 "mulf_sqr2" - .for(var i=0;i<$200;i++) { + // g(x) = >((( 1 - x ) * ( 1 - x ))) + .align $100 +mulf_sqr2: +.for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.sym b/src/test/ref/examples/fastmultiply/fastmultiply8.sym index 12185063d..d7783684a 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.sym +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.sym @@ -61,10 +61,20 @@ (byte) main::k#2 reg byte x 6.6000000000000005 (signed byte) main::r (signed byte) main::r#0 reg byte a 202.0 -(byte*) mulf_sqr1 -(const byte*) mulf_sqr1#0 mulf_sqr1 = (byte*) 8192 -(byte*) mulf_sqr2 -(const byte*) mulf_sqr2#0 mulf_sqr2 = (byte*) 8704 +(byte[$200]) mulf_sqr1 +(const byte[$200]) mulf_sqr1#0 mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((i*i)/256) } + .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } + .if(i>351) { .byte round(((512-i)*(512-i))/256) } + } + }} +(byte[$200]) mulf_sqr2 +(const byte[$200]) mulf_sqr2#0 mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) { + .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } + .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } + .if(i>351) { .byte round(((i-511)*(i-511))/256) } + } + }} (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 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index e0e53d38b..cb4fb7c62 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -33,7 +33,6 @@ .label SCREEN = $400 .label BITMAP = $2000 .const SIN_SIZE = $200 - .label sin2 = $1400 .label rem16u = $25 main: { .const vicSelectGfxBank1_toDd001_return = 3 @@ -819,8 +818,8 @@ bitmap_init: { bitmap_plot_bit: .fill $100, 0 .align $100 sin: .fill 2*$200, 0 -.pc = sin2 "sin2" - .for(var i=0; i<512; i++) { +sin2: +.for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } diff --git a/src/test/ref/examples/sinplotter/sine-plotter.cfg b/src/test/ref/examples/sinplotter/sine-plotter.cfg index a978d65d2..a0e6b6f64 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.cfg +++ b/src/test/ref/examples/sinplotter/sine-plotter.cfg @@ -2,428 +2,422 @@ [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { - .word sin(toRadians([i*360]/512))*320 - } - }} - to:@2 -@2: scope:[] from @1 - [2] phi() - [3] call main + [1] phi() + [2] call main to:@end -@end: scope:[] from @2 - [4] phi() -main: scope:[main] from @2 +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 asm { sei } - [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 to:main::vicSelectGfxBank1 main::vicSelectGfxBank1: scope:[main] from main - [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 - [10] phi() + [9] phi() to:main::vicSelectGfxBank1_@1 main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 - [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 to:main::@2 main::@2: scope:[main] from main::vicSelectGfxBank1_@1 - [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 + [11] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 to:main::toD0181 main::toD0181: scope:[main] from main::@2 - [13] phi() + [12] phi() to:main::@3 main::@3: scope:[main] from main::toD0181 - [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 - [15] call bitmap_init + [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [14] call bitmap_init to:main::@4 main::@4: scope:[main] from main::@3 - [16] phi() - [17] call bitmap_clear + [15] phi() + [16] call bitmap_clear to:main::@5 main::@5: scope:[main] from main::@4 - [18] phi() - [19] call sin16s_gen2 + [17] phi() + [18] call sin16s_gen2 to:main::@6 main::@6: scope:[main] from main::@5 - [20] phi() - [21] call render_sine + [19] phi() + [20] call render_sine to:main::@1 main::@1: scope:[main] from main::@1 main::@6 - [22] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) + [21] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) to:main::@1 render_sine: scope:[render_sine] from main::@6 - [23] phi() + [22] phi() to:render_sine::@1 render_sine::@1: scope:[render_sine] from render_sine render_sine::@2 - [24] (word) render_sine::xpos#3 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::xpos#8 ) - [24] (word) render_sine::sin_idx#2 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::sin_idx#1 ) - [25] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 - [26] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 - [27] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) - [28] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 - [29] call wrap_y - [30] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 + [23] (word) render_sine::xpos#3 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::xpos#8 ) + [23] (word) render_sine::sin_idx#2 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::sin_idx#1 ) + [24] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 + [25] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 + [26] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) + [27] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 + [28] call wrap_y + [29] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 to:render_sine::@3 render_sine::@3: scope:[render_sine] from render_sine::@1 - [31] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 - [32] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 - [33] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 - [34] call bitmap_plot + [30] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 + [31] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 + [32] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 + [33] call bitmap_plot to:render_sine::@4 render_sine::@4: scope:[render_sine] from render_sine::@3 - [35] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 - [36] (signed word*~) render_sine::$3 ← (const signed word*) sin2#0 + (word~) render_sine::$11 - [37] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) - [38] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a - [39] call wrap_y - [40] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + [34] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 + [35] (signed word*~) render_sine::$3 ← (const signed word[$200]) sin2#0 + (word~) render_sine::$11 + [36] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) + [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a + [38] call wrap_y + [39] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 to:render_sine::@5 render_sine::@5: scope:[render_sine] from render_sine::@4 - [41] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 - [42] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - [43] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - [44] call bitmap_plot + [40] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 + [41] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + [42] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + [43] call bitmap_plot to:render_sine::@6 render_sine::@6: scope:[render_sine] from render_sine::@5 - [45] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 - [46] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 + [44] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 + [45] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 to:render_sine::@2 render_sine::@7: scope:[render_sine] from render_sine::@6 - [47] phi() + [46] phi() to:render_sine::@2 render_sine::@2: scope:[render_sine] from render_sine::@6 render_sine::@7 - [48] (word) render_sine::xpos#8 ← phi( render_sine::@6/(byte) 0 render_sine::@7/(word) render_sine::xpos#1 ) - [49] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 - [50] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 + [47] (word) render_sine::xpos#8 ← phi( render_sine::@6/(byte) 0 render_sine::@7/(word) render_sine::xpos#1 ) + [48] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 + [49] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 to:render_sine::@return render_sine::@return: scope:[render_sine] from render_sine::@2 - [51] return + [50] return to:@return bitmap_plot: scope:[bitmap_plot] from render_sine::@3 render_sine::@5 - [52] (word) bitmap_plot::x#2 ← phi( render_sine::@3/(word) bitmap_plot::x#0 render_sine::@5/(word) bitmap_plot::x#1 ) - [52] (byte) bitmap_plot::y#2 ← phi( render_sine::@3/(byte) bitmap_plot::y#0 render_sine::@5/(byte) bitmap_plot::y#1 ) - [53] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) - [54] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 - [55] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 - [56] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 - [57] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + [51] (word) bitmap_plot::x#2 ← phi( render_sine::@3/(word) bitmap_plot::x#0 render_sine::@5/(word) bitmap_plot::x#1 ) + [51] (byte) bitmap_plot::y#2 ← phi( render_sine::@3/(byte) bitmap_plot::y#0 render_sine::@5/(byte) bitmap_plot::y#1 ) + [52] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) + [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 + [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 + [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [58] return + [57] return to:@return wrap_y: scope:[wrap_y] from render_sine::@1 render_sine::@4 - [59] (signed word) wrap_y::y#9 ← phi( render_sine::@1/(signed word) wrap_y::y#0 render_sine::@4/(signed word) wrap_y::y#1 ) + [58] (signed word) wrap_y::y#9 ← phi( render_sine::@1/(signed word) wrap_y::y#0 render_sine::@4/(signed word) wrap_y::y#1 ) to:wrap_y::@1 wrap_y::@1: scope:[wrap_y] from wrap_y wrap_y::@2 - [60] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) - [61] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 + [59] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) + [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 to:wrap_y::@3 wrap_y::@3: scope:[wrap_y] from wrap_y::@1 wrap_y::@4 - [62] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) - [63] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 + [61] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) + [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 to:wrap_y::@5 wrap_y::@5: scope:[wrap_y] from wrap_y::@3 - [64] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 + [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 to:wrap_y::@return wrap_y::@return: scope:[wrap_y] from wrap_y::@5 - [65] return + [64] return to:@return wrap_y::@4: scope:[wrap_y] from wrap_y::@3 - [66] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 + [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 to:wrap_y::@3 wrap_y::@2: scope:[wrap_y] from wrap_y::@1 - [67] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 + [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 to:wrap_y::@1 sin16s_gen2: scope:[sin16s_gen2] from main::@5 - [68] phi() - [69] call div32u16u - [70] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [67] phi() + [68] call div32u16u + [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen2::@2 sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2 - [71] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen2::@1 sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@2 sin16s_gen2::@4 - [72] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) - [72] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[$200]) sin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) - [72] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) - [73] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 - [74] call sin16s - [75] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [71] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) + [71] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[$200]) sin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) + [71] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) + [72] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 + [73] call sin16s + [74] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen2::@3 sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2::@1 - [76] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - [77] call mul16s - [78] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + [75] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + [76] call mul16s + [77] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 to:sin16s_gen2::@4 sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@3 - [79] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - [80] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 - [81] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 - [82] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [83] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 - [84] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 - [85] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 + [78] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + [79] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 + [80] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 + [81] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [82] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 + [83] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 + [84] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 to:sin16s_gen2::@return sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@4 - [86] return + [85] return to:@return mul16s: scope:[mul16s] from sin16s_gen2::@3 - [87] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [88] call mul16u - [89] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [87] call mul16u + [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s - [90] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [91] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@4 - [92] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [93] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 - [94] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 + [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@4 - [95] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) + [94] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [96] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [97] return + [96] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [98] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) - [98] (dword) mul16u::mb#0 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [97] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) + [97] (dword) mul16u::mb#0 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [99] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [99] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [99] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [98] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [98] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [98] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [99] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [101] return + [100] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [103] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [101] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [102] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [103] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [105] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [106] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [107] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [104] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [105] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [106] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [108] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [107] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [108] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [110] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [110] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [109] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [109] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [110] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [111] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [113] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [118] call mulu16_sel - [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [112] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [113] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [114] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [115] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [116] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [117] call mulu16_sel + [118] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [123] call mulu16_sel - [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [119] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [120] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [121] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [122] call mulu16_sel + [123] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [127] call mulu16_sel - [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [124] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [125] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [126] call mulu16_sel + [127] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [130] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [132] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [133] call mulu16_sel - [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [128] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [129] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [130] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [131] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [132] call mulu16_sel + [133] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [138] call mulu16_sel - [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [134] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [135] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [136] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [137] call mulu16_sel + [138] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [143] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [139] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [140] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [141] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [142] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [143] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [145] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [144] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [146] return + [145] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [147] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [146] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [148] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) - [148] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) - [148] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) - [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [151] call mul16u - [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [147] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) + [147] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) + [147] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) + [148] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [149] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [150] call mul16u + [151] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [152] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [153] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [154] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [156] return + [155] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [157] phi() - [158] call divr16u - [159] (word) divr16u::return#2 ← (word) divr16u::return#0 + [156] phi() + [157] call divr16u + [158] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [161] (word) divr16u::rem#4 ← (word) rem16u#1 - [162] call divr16u - [163] (word) divr16u::return#3 ← (word) divr16u::return#0 + [159] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [160] (word) divr16u::rem#4 ← (word) rem16u#1 + [161] call divr16u + [162] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [163] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [164] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [166] return + [165] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [167] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [167] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [166] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [166] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [168] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [168] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [168] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [168] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [169] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [171] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [172] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [167] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [167] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [167] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [167] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [168] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [169] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [170] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [171] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [172] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [174] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [175] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [176] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [177] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 + [173] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [174] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [175] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [176] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [178] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 + [177] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [178] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [180] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [180] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [181] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [182] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [179] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [179] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [180] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [181] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [183] (word) rem16u#1 ← (word) divr16u::rem#11 + [182] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [184] return + [183] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@4 - [185] phi() - [186] call memset + [184] phi() + [185] call memset to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear - [187] phi() - [188] call memset + [186] phi() + [187] call memset to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 - [189] return + [188] return to:@return memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [190] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [190] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [190] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) - [191] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 - [192] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 + [189] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [189] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [189] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) + [190] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 + [191] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 to:memset::@1 memset::@1: scope:[memset] from memset memset::@1 - [193] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 ) - [194] *((byte*) memset::dst#2) ← (byte) memset::c#3 - [195] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 - [196] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 + [192] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 ) + [193] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [194] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [195] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 to:memset::@return memset::@return: scope:[memset] from memset::@1 - [197] return + [196] return to:@return bitmap_init: scope:[bitmap_init] from main::@3 - [198] phi() + [197] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [199] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [199] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [200] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [201] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 - [202] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + [198] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [198] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [199] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [200] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [201] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 to:bitmap_init::@2 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 - [203] phi() + [202] phi() to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 - [204] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) - [205] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [206] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + [203] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [204] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [205] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [207] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) - [207] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) - [208] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 - [209] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [210] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 - [211] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [212] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [213] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [214] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + [206] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [206] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [207] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [208] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [209] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [210] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [211] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [212] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [213] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 - [215] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + [214] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 - [216] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) - [217] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [218] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + [215] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [216] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [217] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [219] return + [218] return to:@return diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index 700fc3336..75224ae3b 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -50,15 +50,13 @@ Adding void pointer type conversion cast (void*) bitmap_screen in (void*~) bitma Adding void pointer type conversion cast (void*) bitmap_gfx in (void*~) bitmap_clear::$3 ← call memset (byte*) bitmap_gfx (number) 0 (word) $1f40 Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number) $400 Adding pointer type conversion cast (byte*) BITMAP in (byte*) BITMAP ← (number) $2000 -Adding pointer type conversion cast (signed word*) sin2 in (signed word*) sin2 ← (number) $1400 Fixing pointer increment (signed word*) sin16s_gen::sintab ← ++ (signed word*) sin16s_gen::sintab Fixing pointer increment (signed word*) sin16s_gen2::sintab ← ++ (signed word*) sin16s_gen2::sintab Fixing pointer addition (signed word*~) render_sine::$0 ← (signed word[$200]) sin + (word) render_sine::sin_idx -Fixing pointer addition (signed word*~) render_sine::$3 ← (signed word*) sin2 + (word) render_sine::sin_idx +Fixing pointer addition (signed word*~) render_sine::$3 ← (signed word[$200]) sin2 + (word) render_sine::sin_idx Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) Identified constant variable (byte*) SCREEN Identified constant variable (byte*) BITMAP -Identified constant variable (signed word*) sin2 Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call vicSelectGfxBank (byte*) SCREEN Inlined call (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP @@ -768,8 +766,7 @@ bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot (byte*) BITMAP#0 ← ((byte*)) (number) $2000 (word) SIN_SIZE#0 ← (number) $200 (signed word[$200]) sin#0 ← { fill( $200, 0) } - (signed word*) sin2#0 ← ((signed word*)) (number) $1400 - kickasm(location (signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { + (signed word[$200]) sin2#0 ← kickasm {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} @@ -945,7 +942,7 @@ render_sine::@6: scope:[render_sine] from render_sine::@5 (word) render_sine::xpos#7 ← phi( render_sine::@5/(word) render_sine::xpos#3 ) (word) render_sine::sin_idx#3 ← phi( render_sine::@5/(word) render_sine::sin_idx#5 ) (word~) render_sine::$11 ← (word) render_sine::sin_idx#3 * (const byte) SIZEOF_SIGNED_WORD - (signed word*~) render_sine::$3 ← (signed word*) sin2#0 + (word~) render_sine::$11 + (signed word*~) render_sine::$3 ← (signed word[$200]) sin2#0 + (word~) render_sine::$11 (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) (number~) render_sine::$4 ← (signed word) render_sine::sin2_val#0 + (number) $a (signed word) wrap_y::y#1 ← (number~) render_sine::$4 @@ -1850,8 +1847,8 @@ SYMBOL TABLE SSA (dword) sin16s_gen2::x#2 (dword) sin16s_gen2::x#3 (dword) sin16s_gen2::x#4 -(signed word*) sin2 -(signed word*) sin2#0 +(signed word[$200]) sin2 +(signed word[$200]) sin2#0 (byte()) wrap_y((signed word) wrap_y::y) (byte~) wrap_y::$0 (bool~) wrap_y::$1 @@ -2027,7 +2024,6 @@ Inlining cast (byte) memset::c#1 ← (unumber)(number) 0 Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400 Inlining cast (byte*) BITMAP#0 ← (byte*)(number) $2000 Inlining cast (word) SIN_SIZE#0 ← (unumber)(number) $200 -Inlining cast (signed word*) sin2#0 ← (signed word*)(number) $1400 Inlining cast *((byte*) CIA2_PORT_A_DDR#0) ← (unumber)(number) 3 Inlining cast (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 Inlining cast (word~) main::toD0181_$0#0 ← (word)(byte*) main::toD0181_screen#1 @@ -2105,7 +2101,6 @@ Simplifying constant integer cast $fff8 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 8192 Simplifying constant integer cast $200 -Simplifying constant pointer cast (signed word*) 5120 Simplifying constant integer cast 3 Simplifying constant integer cast 3 Simplifying constant integer cast $40 @@ -2229,7 +2224,7 @@ Inversing boolean not [193] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) Inversing boolean not [252] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 == (byte) 0 from [251] (bool~) sin16s::$15 ← (byte) sin16s::isUpper#2 != (byte) 0 Inversing boolean not [309] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [308] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0 Inversing boolean not [329] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [328] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7 -Inversing boolean not [477] (bool~) render_sine::$8 ← (word) render_sine::xpos#1 != (word) $140 from [476] (bool~) render_sine::$7 ← (word) render_sine::xpos#1 == (word) $140 +Inversing boolean not [476] (bool~) render_sine::$8 ← (word) render_sine::xpos#1 != (word) $140 from [475] (bool~) render_sine::$7 ← (word) render_sine::xpos#1 == (word) $140 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 @@ -2472,10 +2467,10 @@ Simple Condition (bool~) bitmap_init::$1 [310] if((byte) bitmap_init::bits#1!=(b Simple Condition (bool~) bitmap_init::$2 [314] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 Simple Condition (bool~) bitmap_init::$9 [330] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6 Simple Condition (bool~) bitmap_init::$11 [334] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 -Simple Condition (bool~) render_sine::$8 [478] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@2 -Simple Condition (bool~) render_sine::$9 [482] if((word) render_sine::sin_idx#1<(word) SIN_SIZE#0) goto render_sine::@1 -Simple Condition (bool~) wrap_y::$1 [489] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -Simple Condition (bool~) wrap_y::$2 [494] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@8 +Simple Condition (bool~) render_sine::$8 [477] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@2 +Simple Condition (bool~) render_sine::$9 [481] if((word) render_sine::sin_idx#1<(word) SIN_SIZE#0) goto render_sine::@1 +Simple Condition (bool~) wrap_y::$1 [488] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 +Simple Condition (bool~) wrap_y::$2 [493] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@8 Successful SSA optimization Pass2ConditionalJumpSimplification Constant right-side identified [220] (word) mulu16_sel::v2#2 ← (unumber)(number) $10000/(number) 6 Constant right-side identified [297] (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) } @@ -2533,7 +2528,10 @@ Constant (const byte*) SCREEN#0 = (byte*) 1024 Constant (const byte*) BITMAP#0 = (byte*) 8192 Constant (const word) SIN_SIZE#0 = $200 Constant (const signed word[$200]) sin#0 = { fill( $200, 0) } -Constant (const signed word*) sin2#0 = (signed word*) 5120 +Constant (const signed word[$200]) sin2#0 = kickasm {{ .for(var i=0; i<512; i++) { + .word sin(toRadians([i*360]/512))*320 + } + }} Constant (const signed word) sin16s_gen2::min#0 = -$140 Constant (const signed word) sin16s_gen2::max#0 = $140 Constant (const word) render_sine::xpos#0 = 0 @@ -2560,11 +2558,11 @@ Constant (const word) divr16u::divisor#1 = div32u16u::divisor#0 Successful SSA optimization Pass2ConstantIdentification Constant value identified (void*)bitmap_screen#1 in [346] (void*) memset::str#0 ← (void*)(const byte*) bitmap_screen#1 Constant value identified (void*)bitmap_gfx#1 in [352] (void*) memset::str#1 ← (void*)(const byte*) bitmap_gfx#1 -Constant value identified (word)main::vicSelectGfxBank1_gfx#0 in [387] (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(const byte*) main::vicSelectGfxBank1_gfx#0 -Constant value identified (word)main::toD0181_screen#0 in [402] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 -Constant value identified (word)main::toD0181_gfx#0 in [406] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 +Constant value identified (word)main::vicSelectGfxBank1_gfx#0 in [386] (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(const byte*) main::vicSelectGfxBank1_gfx#0 +Constant value identified (word)main::toD0181_screen#0 in [401] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 +Constant value identified (word)main::toD0181_gfx#0 in [405] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantValues -if() condition always true - replacing block destination [437] if(true) goto main::@2 +if() condition always true - replacing block destination [436] if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [40] divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value [42] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10 @@ -2606,7 +2604,7 @@ Constant right-side identified [18] (word) divr16u::dividend#1 ← > (const dwor Constant right-side identified [22] (word) divr16u::dividend#2 ← < (const dword) div32u16u::dividend#0 Constant right-side identified [58] (signed word) sin16s_gen2::ampl#0 ← (const signed word) sin16s_gen2::max#0 - (const signed word) sin16s_gen2::min#0 Constant right-side identified [162] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10 -Constant right-side identified [182] (byte~) main::$0 ← (const byte) VIC_BMM#0 | (const byte) VIC_DEN#0 +Constant right-side identified [181] (byte~) main::$0 ← (const byte) VIC_BMM#0 | (const byte) VIC_DEN#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) divr16u::dividend#1 = >div32u16u::dividend#0 Constant (const word) divr16u::dividend#2 = > (signed byte) 1 -Constant right-side identified [167] (byte~) main::$1 ← (const byte) main::$0 | (const byte) VIC_RSEL#0 -Constant right-side identified [171] (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) main::vicSelectGfxBank1_toDd001_$0#0 -Constant right-side identified [176] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff -Constant right-side identified [179] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 +Constant right-side identified [166] (byte~) main::$1 ← (const byte) main::$0 | (const byte) VIC_RSEL#0 +Constant right-side identified [170] (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) main::vicSelectGfxBank1_toDd001_$0#0 +Constant right-side identified [175] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff +Constant right-side identified [178] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const word) mul16u::b#0 = (word)mul16s::b#0 Constant (const word) mul16s::$10 = (word)mul16s::b#0 @@ -2651,10 +2649,10 @@ Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&$3fff Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0 Successful SSA optimization Pass2ConstantIdentification Constant right-side identified [48] (signed word) sin16s_gen2::offs#0 ← (const signed word) sin16s_gen2::min#0 + (const signed word) sin16s_gen2::$1 -Constant right-side identified [163] (byte~) main::$2 ← (const byte) main::$1 | (byte) 3 -Constant right-side identified [166] (byte~) main::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 -Constant right-side identified [170] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 -Constant right-side identified [172] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 +Constant right-side identified [162] (byte~) main::$2 ← (const byte) main::$1 | (byte) 3 +Constant right-side identified [165] (byte~) main::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 +Constant right-side identified [169] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 +Constant right-side identified [171] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const signed word) sin16s_gen2::offs#0 = sin16s_gen2::min#0+sin16s_gen2::$1 Constant (const byte) main::$2 = main::$1|3 @@ -2666,7 +2664,7 @@ Simplifying constant evaluating to zero (const signed word) sin16s_gen2::min#0+( Simplifying constant evaluating to zero (const byte) main::vicSelectGfxBank1_toDd001_$1#0/(byte) $40 in Successful SSA optimization PassNSimplifyConstantZero Simplifying expression containing zero sin16s_gen2::$7 in [62] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word~) sin16s_gen2::$7 -Simplifying expression containing zero 3 in [167] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2#0 +Simplifying expression containing zero 3 in [166] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2#0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const signed word) sin16s_gen2::$1 Eliminating unused constant (const signed word) sin16s_gen2::offs#0 @@ -2679,14 +2677,14 @@ Eliminating unused constant (const byte*) main::vicSelectGfxBank1_gfx#0 Successful SSA optimization PassNEliminateUnusedVars Alias (signed word~) sin16s_gen2::$8 = (signed word~) sin16s_gen2::$7 Successful SSA optimization Pass2AliasElimination -Constant right-side identified [167] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 -Constant right-side identified [168] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f +Constant right-side identified [166] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 +Constant right-side identified [167] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3 Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&$f Successful SSA optimization Pass2ConstantIdentification -Constant right-side identified [165] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 +Constant right-side identified [164] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification @@ -2698,8 +2696,8 @@ Inlining Noop Cast [105] (signed word~) sin16s::$19 ← (signed word)(word) sin1 Inlining Noop Cast [118] (byte*~) memset::$0 ← (byte*)(void*) memset::str#2 keeping memset::str#2 Inlining Noop Cast [120] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 keeping memset::str#2 Successful SSA optimization Pass2NopCastInlining -Rewriting multiplication to use shift [172] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 * (const byte) SIZEOF_SIGNED_WORD -Rewriting multiplication to use shift [182] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift [171] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift [181] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 * (const byte) SIZEOF_SIGNED_WORD Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings (const word) divr16u::quotient#0 Inlining constant with var siblings (const byte) divr16u::i#0 @@ -2815,6 +2813,7 @@ Adding NOP phi() at start of @begin Adding NOP phi() at start of @6 Adding NOP phi() at start of @17 Adding NOP phi() at start of @28 +Adding NOP phi() at start of @31 Adding NOP phi() at start of @34 Adding NOP phi() at start of @35 Adding NOP phi() at start of @end @@ -2918,6 +2917,7 @@ Coalesced down to 30 phi equivalence classes Culled Empty Block (label) @6 Culled Empty Block (label) @17 Culled Empty Block (label) @28 +Culled Empty Block (label) @31 Culled Empty Block (label) @35 Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return Culled Empty Block (label) main::toD0181_@return @@ -2943,8 +2943,7 @@ Culled Empty Block (label) bitmap_init::@4 Culled Empty Block (label) bitmap_init::@11 Culled Empty Block (label) bitmap_init::@12 Culled Empty Block (label) bitmap_init::@9 -Renumbering block @31 to @1 -Renumbering block @34 to @2 +Renumbering block @34 to @1 Renumbering block div32u16u::@2 to div32u16u::@1 Renumbering block div32u16u::@3 to div32u16u::@2 Renumbering block mul16u::@4 to mul16u::@3 @@ -2979,7 +2978,7 @@ Renumbering block wrap_y::@7 to wrap_y::@3 Renumbering block wrap_y::@8 to wrap_y::@4 Renumbering block wrap_y::@9 to wrap_y::@5 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @2 +Adding NOP phi() at start of @1 Adding NOP phi() at start of @end Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of main::toD0181 @@ -3000,430 +2999,424 @@ FINAL CONTROL FLOW GRAPH [0] phi() to:@1 @1: scope:[] from @begin - kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { - .word sin(toRadians([i*360]/512))*320 - } - }} - to:@2 -@2: scope:[] from @1 - [2] phi() - [3] call main + [1] phi() + [2] call main to:@end -@end: scope:[] from @2 - [4] phi() -main: scope:[main] from @2 +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 asm { sei } - [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 - [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 + [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 to:main::vicSelectGfxBank1 main::vicSelectGfxBank1: scope:[main] from main - [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 - [10] phi() + [9] phi() to:main::vicSelectGfxBank1_@1 main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 - [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 to:main::@2 main::@2: scope:[main] from main::vicSelectGfxBank1_@1 - [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 + [11] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 to:main::toD0181 main::toD0181: scope:[main] from main::@2 - [13] phi() + [12] phi() to:main::@3 main::@3: scope:[main] from main::toD0181 - [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 - [15] call bitmap_init + [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [14] call bitmap_init to:main::@4 main::@4: scope:[main] from main::@3 - [16] phi() - [17] call bitmap_clear + [15] phi() + [16] call bitmap_clear to:main::@5 main::@5: scope:[main] from main::@4 - [18] phi() - [19] call sin16s_gen2 + [17] phi() + [18] call sin16s_gen2 to:main::@6 main::@6: scope:[main] from main::@5 - [20] phi() - [21] call render_sine + [19] phi() + [20] call render_sine to:main::@1 main::@1: scope:[main] from main::@1 main::@6 - [22] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) + [21] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) to:main::@1 render_sine: scope:[render_sine] from main::@6 - [23] phi() + [22] phi() to:render_sine::@1 render_sine::@1: scope:[render_sine] from render_sine render_sine::@2 - [24] (word) render_sine::xpos#3 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::xpos#8 ) - [24] (word) render_sine::sin_idx#2 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::sin_idx#1 ) - [25] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 - [26] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 - [27] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) - [28] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 - [29] call wrap_y - [30] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 + [23] (word) render_sine::xpos#3 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::xpos#8 ) + [23] (word) render_sine::sin_idx#2 ← phi( render_sine/(byte) 0 render_sine::@2/(word) render_sine::sin_idx#1 ) + [24] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 + [25] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 + [26] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) + [27] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 + [28] call wrap_y + [29] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 to:render_sine::@3 render_sine::@3: scope:[render_sine] from render_sine::@1 - [31] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 - [32] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 - [33] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 - [34] call bitmap_plot + [30] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 + [31] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 + [32] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 + [33] call bitmap_plot to:render_sine::@4 render_sine::@4: scope:[render_sine] from render_sine::@3 - [35] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 - [36] (signed word*~) render_sine::$3 ← (const signed word*) sin2#0 + (word~) render_sine::$11 - [37] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) - [38] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a - [39] call wrap_y - [40] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + [34] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 + [35] (signed word*~) render_sine::$3 ← (const signed word[$200]) sin2#0 + (word~) render_sine::$11 + [36] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) + [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a + [38] call wrap_y + [39] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 to:render_sine::@5 render_sine::@5: scope:[render_sine] from render_sine::@4 - [41] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 - [42] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - [43] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - [44] call bitmap_plot + [40] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 + [41] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + [42] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + [43] call bitmap_plot to:render_sine::@6 render_sine::@6: scope:[render_sine] from render_sine::@5 - [45] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 - [46] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 + [44] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 + [45] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 to:render_sine::@2 render_sine::@7: scope:[render_sine] from render_sine::@6 - [47] phi() + [46] phi() to:render_sine::@2 render_sine::@2: scope:[render_sine] from render_sine::@6 render_sine::@7 - [48] (word) render_sine::xpos#8 ← phi( render_sine::@6/(byte) 0 render_sine::@7/(word) render_sine::xpos#1 ) - [49] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 - [50] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 + [47] (word) render_sine::xpos#8 ← phi( render_sine::@6/(byte) 0 render_sine::@7/(word) render_sine::xpos#1 ) + [48] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 + [49] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 to:render_sine::@return render_sine::@return: scope:[render_sine] from render_sine::@2 - [51] return + [50] return to:@return bitmap_plot: scope:[bitmap_plot] from render_sine::@3 render_sine::@5 - [52] (word) bitmap_plot::x#2 ← phi( render_sine::@3/(word) bitmap_plot::x#0 render_sine::@5/(word) bitmap_plot::x#1 ) - [52] (byte) bitmap_plot::y#2 ← phi( render_sine::@3/(byte) bitmap_plot::y#0 render_sine::@5/(byte) bitmap_plot::y#1 ) - [53] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) - [54] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 - [55] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 - [56] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 - [57] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + [51] (word) bitmap_plot::x#2 ← phi( render_sine::@3/(word) bitmap_plot::x#0 render_sine::@5/(word) bitmap_plot::x#1 ) + [51] (byte) bitmap_plot::y#2 ← phi( render_sine::@3/(byte) bitmap_plot::y#0 render_sine::@5/(byte) bitmap_plot::y#1 ) + [52] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) + [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 + [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 + [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [58] return + [57] return to:@return wrap_y: scope:[wrap_y] from render_sine::@1 render_sine::@4 - [59] (signed word) wrap_y::y#9 ← phi( render_sine::@1/(signed word) wrap_y::y#0 render_sine::@4/(signed word) wrap_y::y#1 ) + [58] (signed word) wrap_y::y#9 ← phi( render_sine::@1/(signed word) wrap_y::y#0 render_sine::@4/(signed word) wrap_y::y#1 ) to:wrap_y::@1 wrap_y::@1: scope:[wrap_y] from wrap_y wrap_y::@2 - [60] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) - [61] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 + [59] (signed word) wrap_y::y#4 ← phi( wrap_y/(signed word) wrap_y::y#9 wrap_y::@2/(signed word) wrap_y::y#2 ) + [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 to:wrap_y::@3 wrap_y::@3: scope:[wrap_y] from wrap_y::@1 wrap_y::@4 - [62] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) - [63] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 + [61] (signed word) wrap_y::y#6 ← phi( wrap_y::@1/(signed word) wrap_y::y#4 wrap_y::@4/(signed word) wrap_y::y#3 ) + [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 to:wrap_y::@5 wrap_y::@5: scope:[wrap_y] from wrap_y::@3 - [64] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 + [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 to:wrap_y::@return wrap_y::@return: scope:[wrap_y] from wrap_y::@5 - [65] return + [64] return to:@return wrap_y::@4: scope:[wrap_y] from wrap_y::@3 - [66] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 + [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 to:wrap_y::@3 wrap_y::@2: scope:[wrap_y] from wrap_y::@1 - [67] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 + [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 to:wrap_y::@1 sin16s_gen2: scope:[sin16s_gen2] from main::@5 - [68] phi() - [69] call div32u16u - [70] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [67] phi() + [68] call div32u16u + [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen2::@2 sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2 - [71] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen2::@1 sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@2 sin16s_gen2::@4 - [72] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) - [72] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[$200]) sin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) - [72] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) - [73] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 - [74] call sin16s - [75] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [71] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) + [71] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[$200]) sin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) + [71] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) + [72] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 + [73] call sin16s + [74] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen2::@3 sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2::@1 - [76] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - [77] call mul16s - [78] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + [75] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + [76] call mul16s + [77] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 to:sin16s_gen2::@4 sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@3 - [79] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - [80] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 - [81] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 - [82] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD - [83] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 - [84] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 - [85] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 + [78] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + [79] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 + [80] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 + [81] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [82] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 + [83] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 + [84] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 to:sin16s_gen2::@return sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@4 - [86] return + [85] return to:@return mul16s: scope:[mul16s] from sin16s_gen2::@3 - [87] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [88] call mul16u - [89] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [87] call mul16u + [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s - [90] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [91] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@4 - [92] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [93] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 - [94] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 + [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@4 - [95] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) + [94] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [96] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [97] return + [96] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [98] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) - [98] (dword) mul16u::mb#0 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [97] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) + [97] (dword) mul16u::mb#0 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [99] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [99] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [99] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [98] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [98] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [98] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [99] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [101] return + [100] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [103] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [101] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [102] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [103] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [105] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [106] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [107] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [104] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [105] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [106] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [108] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [107] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [108] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [110] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) - [110] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [109] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 ) + [109] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [110] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [111] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [113] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 - [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [118] call mulu16_sel - [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [112] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [113] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 + [114] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [115] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [116] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [117] call mulu16_sel + [118] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [123] call mulu16_sel - [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [119] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [120] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [121] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [122] call mulu16_sel + [123] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [127] call mulu16_sel - [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [124] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [125] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [126] call mulu16_sel + [127] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [130] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [132] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [133] call mulu16_sel - [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [128] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [129] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [130] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [131] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [132] call mulu16_sel + [133] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [138] call mulu16_sel - [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [134] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [135] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [136] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [137] call mulu16_sel + [138] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 - [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [143] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 + [139] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [140] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 + [141] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [142] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [143] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [145] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [144] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [146] return + [145] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [147] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [146] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [148] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) - [148] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) - [148] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) - [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [151] call mul16u - [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [147] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 ) + [147] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 ) + [147] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) + [148] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [149] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [150] call mul16u + [151] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [152] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [153] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [154] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [156] return + [155] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [157] phi() - [158] call divr16u - [159] (word) divr16u::return#2 ← (word) divr16u::return#0 + [156] phi() + [157] call divr16u + [158] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [161] (word) divr16u::rem#4 ← (word) rem16u#1 - [162] call divr16u - [163] (word) divr16u::return#3 ← (word) divr16u::return#0 + [159] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [160] (word) divr16u::rem#4 ← (word) rem16u#1 + [161] call divr16u + [162] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [163] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [164] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [166] return + [165] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [167] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [167] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [166] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [166] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [168] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) - [168] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) - [168] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [168] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [169] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 - [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [171] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 - [172] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 + [167] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 ) + [167] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 ) + [167] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [167] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [168] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 + [169] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [170] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 + [171] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 + [172] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [174] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [175] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 - [176] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 - [177] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 + [173] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [174] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 + [175] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 + [176] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [178] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 + [177] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [178] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [180] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [180] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [181] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [182] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 + [179] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [179] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [180] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [181] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [183] (word) rem16u#1 ← (word) divr16u::rem#11 + [182] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [184] return + [183] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@4 - [185] phi() - [186] call memset + [184] phi() + [185] call memset to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear - [187] phi() - [188] call memset + [186] phi() + [187] call memset to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 - [189] return + [188] return to:@return memset: scope:[memset] from bitmap_clear bitmap_clear::@1 - [190] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) - [190] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) - [190] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) - [191] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 - [192] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 + [189] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [189] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [189] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 ) + [190] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 + [191] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 to:memset::@1 memset::@1: scope:[memset] from memset memset::@1 - [193] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 ) - [194] *((byte*) memset::dst#2) ← (byte) memset::c#3 - [195] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 - [196] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 + [192] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 ) + [193] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [194] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [195] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 to:memset::@return memset::@return: scope:[memset] from memset::@1 - [197] return + [196] return to:@return bitmap_init: scope:[bitmap_init] from main::@3 - [198] phi() + [197] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [199] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [199] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [200] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [201] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 - [202] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + [198] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [198] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [199] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [200] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [201] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 to:bitmap_init::@2 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 - [203] phi() + [202] phi() to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 - [204] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) - [205] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [206] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + [203] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [204] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [205] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [207] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) - [207] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) - [208] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 - [209] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [210] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 - [211] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [212] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [213] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [214] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + [206] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [206] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [207] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [208] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [209] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [210] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [211] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [212] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [213] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 - [215] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + [214] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 - [216] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) - [217] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [218] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + [215] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [216] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [217] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [219] return + [218] return to:@return @@ -3702,7 +3695,7 @@ VARIABLE REGISTER WEIGHTS (dword) sin16s_gen2::x (dword) sin16s_gen2::x#1 7.333333333333333 (dword) sin16s_gen2::x#2 3.0 -(signed word*) sin2 +(signed word[$200]) sin2 (byte()) wrap_y((signed word) wrap_y::y) (byte) wrap_y::return (byte) wrap_y::return#0 22.0 @@ -4030,116 +4023,111 @@ INITIAL ASM .label SCREEN = $400 .label BITMAP = $2000 .const SIN_SIZE = $200 - .label sin2 = $1400 .label rem16u = $b9 //SEG3 @begin bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} -//SEG6 [2] phi from @1 to @2 [phi:@1->@2] -b2_from_b1: - jmp b2 -//SEG7 @2 -b2: -//SEG8 [3] call main +//SEG6 [2] call main jsr main -//SEG9 [4] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: jmp bend -//SEG10 @end +//SEG8 @end bend: -//SEG11 main +//SEG9 main main: { .const vicSelectGfxBank1_toDd001_return = 3 .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f - //SEG12 asm { sei } + //SEG10 asm { sei } sei - //SEG13 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable normal interrupt // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG14 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG15 [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 jmp vicSelectGfxBank1 - //SEG16 main::vicSelectGfxBank1 + //SEG14 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG17 [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG18 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG19 main::vicSelectGfxBank1_toDd001 + //SEG17 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG20 main::vicSelectGfxBank1_@1 + //SEG18 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG21 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b2 - //SEG22 main::@2 + //SEG20 main::@2 b2: - //SEG23 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG21 [11] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta D016 - //SEG24 [13] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] + //SEG22 [12] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] toD0181_from_b2: jmp toD0181 - //SEG25 main::toD0181 + //SEG23 main::toD0181 toD0181: jmp b3 - //SEG26 main::@3 + //SEG24 main::@3 b3: - //SEG27 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG28 [15] call bitmap_init - //SEG29 [198] phi from main::@3 to bitmap_init [phi:main::@3->bitmap_init] + //SEG26 [14] call bitmap_init + //SEG27 [197] phi from main::@3 to bitmap_init [phi:main::@3->bitmap_init] bitmap_init_from_b3: jsr bitmap_init - //SEG30 [16] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG28 [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG31 main::@4 + //SEG29 main::@4 b4: - //SEG32 [17] call bitmap_clear - //SEG33 [185] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] + //SEG30 [16] call bitmap_clear + //SEG31 [184] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] bitmap_clear_from_b4: jsr bitmap_clear - //SEG34 [18] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG32 [17] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG35 main::@5 + //SEG33 main::@5 b5: - //SEG36 [19] call sin16s_gen2 - //SEG37 [68] phi from main::@5 to sin16s_gen2 [phi:main::@5->sin16s_gen2] + //SEG34 [18] call sin16s_gen2 + //SEG35 [67] phi from main::@5 to sin16s_gen2 [phi:main::@5->sin16s_gen2] sin16s_gen2_from_b5: jsr sin16s_gen2 - //SEG38 [20] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG36 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG39 main::@6 + //SEG37 main::@6 b6: - //SEG40 [21] call render_sine - //SEG41 [23] phi from main::@6 to render_sine [phi:main::@6->render_sine] + //SEG38 [20] call render_sine + //SEG39 [22] phi from main::@6 to render_sine [phi:main::@6->render_sine] render_sine_from_b6: jsr render_sine jmp b1 - //SEG42 main::@1 + //SEG40 main::@1 b1: - //SEG43 [22] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG41 [21] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp b1 } -//SEG44 render_sine +//SEG42 render_sine render_sine: { .label _0 = $44 .label _3 = $4c @@ -4151,34 +4139,34 @@ render_sine: { .label ypos2 = $51 .label xpos = 4 .label sin_idx = 2 - //SEG45 [24] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] + //SEG43 [23] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] b1_from_render_sine: - //SEG46 [24] phi (word) render_sine::xpos#3 = (byte) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 + //SEG44 [23] phi (word) render_sine::xpos#3 = (byte) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 lda #0 sta xpos lda #0 sta xpos+1 - //SEG47 [24] phi (word) render_sine::sin_idx#2 = (byte) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 + //SEG45 [23] phi (word) render_sine::sin_idx#2 = (byte) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 lda #0 sta sin_idx lda #0 sta sin_idx+1 jmp b1 - //SEG48 [24] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] + //SEG46 [23] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] b1_from_b2: - //SEG49 [24] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy - //SEG50 [24] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy + //SEG47 [23] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy + //SEG48 [23] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy jmp b1 - //SEG51 render_sine::@1 + //SEG49 render_sine::@1 b1: - //SEG52 [25] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + //SEG50 [24] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _10 lda sin_idx+1 rol sta _10+1 - //SEG53 [26] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz2 + //SEG51 [25] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz2 lda _10 clc adc #sin sta _0+1 - //SEG54 [27] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) -- vwsz1=_deref_pwsz2 + //SEG52 [26] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) -- vwsz1=_deref_pwsz2 ldy #0 lda (_0),y sta sin_val iny lda (_0),y sta sin_val+1 - //SEG55 [28] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 -- vwsz1=vwsz2 + //SEG53 [27] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 -- vwsz1=vwsz2 lda sin_val sta wrap_y.y lda sin_val+1 sta wrap_y.y+1 - //SEG56 [29] call wrap_y - //SEG57 [59] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] + //SEG54 [28] call wrap_y + //SEG55 [58] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] wrap_y_from_b1: - //SEG58 [59] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy + //SEG56 [58] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy jsr wrap_y - //SEG59 [30] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 + //SEG57 [29] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 lda wrap_y.return_2 sta wrap_y.return jmp b3 - //SEG60 render_sine::@3 + //SEG58 render_sine::@3 b3: - //SEG61 [31] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuz1=vbuz2 + //SEG59 [30] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuz1=vbuz2 lda wrap_y.return sta ypos - //SEG62 [32] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 + //SEG60 [31] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 lda xpos sta bitmap_plot.x lda xpos+1 sta bitmap_plot.x+1 - //SEG63 [33] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 -- vbuz1=vbuz2 + //SEG61 [32] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 -- vbuz1=vbuz2 lda ypos sta bitmap_plot.y - //SEG64 [34] call bitmap_plot - //SEG65 [52] phi from render_sine::@3 to bitmap_plot [phi:render_sine::@3->bitmap_plot] + //SEG62 [33] call bitmap_plot + //SEG63 [51] phi from render_sine::@3 to bitmap_plot [phi:render_sine::@3->bitmap_plot] bitmap_plot_from_b3: - //SEG66 [52] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@3->bitmap_plot#0] -- register_copy - //SEG67 [52] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@3->bitmap_plot#1] -- register_copy + //SEG64 [51] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@3->bitmap_plot#0] -- register_copy + //SEG65 [51] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b4 - //SEG68 render_sine::@4 + //SEG66 render_sine::@4 b4: - //SEG69 [35] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + //SEG67 [34] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _11 lda sin_idx+1 rol sta _11+1 - //SEG70 [36] (signed word*~) render_sine::$3 ← (const signed word*) sin2#0 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz2 + //SEG68 [35] (signed word*~) render_sine::$3 ← (const signed word[$200]) sin2#0 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz2 lda _11 clc adc #sin2 sta _3+1 - //SEG71 [37] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) -- vwsz1=_deref_pwsz2 + //SEG69 [36] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) -- vwsz1=_deref_pwsz2 ldy #0 lda (_3),y sta sin2_val iny lda (_3),y sta sin2_val+1 - //SEG72 [38] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz2_plus_vbsc1 + //SEG70 [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz2_plus_vbsc1 lda #$a sta $fe ora #$7f @@ -4266,74 +4254,74 @@ render_sine: { lda sin2_val+1 adc $ff sta wrap_y.y+1 - //SEG73 [39] call wrap_y - //SEG74 [59] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] + //SEG71 [38] call wrap_y + //SEG72 [58] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] wrap_y_from_b4: - //SEG75 [59] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@4->wrap_y#0] -- register_copy + //SEG73 [58] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@4->wrap_y#0] -- register_copy jsr wrap_y - //SEG76 [40] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 + //SEG74 [39] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 -- vbuz1=vbuz2 lda wrap_y.return_2 sta wrap_y.return_1 jmp b5 - //SEG77 render_sine::@5 + //SEG75 render_sine::@5 b5: - //SEG78 [41] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuz1=vbuz2 + //SEG76 [40] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuz1=vbuz2 lda wrap_y.return_1 sta ypos2 - //SEG79 [42] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 + //SEG77 [41] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 -- vwuz1=vwuz2 lda xpos sta bitmap_plot.x lda xpos+1 sta bitmap_plot.x+1 - //SEG80 [43] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 -- vbuz1=vbuz2 + //SEG78 [42] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 -- vbuz1=vbuz2 lda ypos2 sta bitmap_plot.y - //SEG81 [44] call bitmap_plot - //SEG82 [52] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] + //SEG79 [43] call bitmap_plot + //SEG80 [51] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] bitmap_plot_from_b5: - //SEG83 [52] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@5->bitmap_plot#0] -- register_copy - //SEG84 [52] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@5->bitmap_plot#1] -- register_copy + //SEG81 [51] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@5->bitmap_plot#0] -- register_copy + //SEG82 [51] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@5->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b6 - //SEG85 render_sine::@6 + //SEG83 render_sine::@6 b6: - //SEG86 [45] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + //SEG84 [44] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc xpos bne !+ inc xpos+1 !: - //SEG87 [46] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 -- vwuz1_neq_vwuc1_then_la1 + //SEG85 [45] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 -- vwuz1_neq_vwuc1_then_la1 lda xpos+1 cmp #>$140 bne b7_from_b6 lda xpos cmp #<$140 bne b7_from_b6 - //SEG88 [48] phi from render_sine::@6 to render_sine::@2 [phi:render_sine::@6->render_sine::@2] + //SEG86 [47] phi from render_sine::@6 to render_sine::@2 [phi:render_sine::@6->render_sine::@2] b2_from_b6: - //SEG89 [48] phi (word) render_sine::xpos#8 = (byte) 0 [phi:render_sine::@6->render_sine::@2#0] -- vwuz1=vbuc1 + //SEG87 [47] phi (word) render_sine::xpos#8 = (byte) 0 [phi:render_sine::@6->render_sine::@2#0] -- vwuz1=vbuc1 lda #0 sta xpos lda #0 sta xpos+1 jmp b2 - //SEG90 [47] phi from render_sine::@6 to render_sine::@7 [phi:render_sine::@6->render_sine::@7] + //SEG88 [46] phi from render_sine::@6 to render_sine::@7 [phi:render_sine::@6->render_sine::@7] b7_from_b6: jmp b7 - //SEG91 render_sine::@7 + //SEG89 render_sine::@7 b7: - //SEG92 [48] phi from render_sine::@7 to render_sine::@2 [phi:render_sine::@7->render_sine::@2] + //SEG90 [47] phi from render_sine::@7 to render_sine::@2 [phi:render_sine::@7->render_sine::@2] b2_from_b7: - //SEG93 [48] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@7->render_sine::@2#0] -- register_copy + //SEG91 [47] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@7->render_sine::@2#0] -- register_copy jmp b2 - //SEG94 render_sine::@2 + //SEG92 render_sine::@2 b2: - //SEG95 [49] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + //SEG93 [48] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc sin_idx bne !+ inc sin_idx+1 !: - //SEG96 [50] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG94 [49] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 lda sin_idx+1 cmp #>SIN_SIZE bcc b1_from_b2 @@ -4343,12 +4331,12 @@ render_sine: { bcc b1_from_b2 !: jmp breturn - //SEG97 render_sine::@return + //SEG95 render_sine::@return breturn: - //SEG98 [51] return + //SEG96 [50] return rts } -//SEG99 bitmap_plot +//SEG97 bitmap_plot // Plot a single dot in the bitmap // bitmap_plot(word zeropage(7) x, byte zeropage(6) y) bitmap_plot: { @@ -4358,20 +4346,20 @@ bitmap_plot: { .label plotter_1 = $56 .label x = 7 .label y = 6 - //SEG100 [53] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + //SEG98 [52] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy y lda bitmap_plot_yhi,y sta plotter+1 lda bitmap_plot_ylo,y sta plotter - //SEG101 [54] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + //SEG99 [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG102 [55] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 + //SEG100 [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 lda plotter clc adc _1 @@ -4379,10 +4367,10 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter_1+1 - //SEG103 [56] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuz1=_lo_vwuz2 + //SEG101 [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuz1=_lo_vwuz2 lda x sta _2 - //SEG104 [57] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG102 [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter_1),y ldy _2 @@ -4390,26 +4378,26 @@ bitmap_plot: { ldy #0 sta (plotter_1),y jmp breturn - //SEG105 bitmap_plot::@return + //SEG103 bitmap_plot::@return breturn: - //SEG106 [58] return + //SEG104 [57] return rts } -//SEG107 wrap_y +//SEG105 wrap_y // wrap_y(signed word zeropage(9) y) wrap_y: { .label y = 9 .label return = $48 .label return_1 = $50 .label return_2 = $59 - //SEG108 [60] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + //SEG106 [59] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] b1_from_wrap_y: b1_from_b2: - //SEG109 [60] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + //SEG107 [59] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy jmp b1 - //SEG110 wrap_y::@1 + //SEG108 wrap_y::@1 b1: - //SEG111 [61] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 + //SEG109 [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 lda y cmp #<$c8 lda y+1 @@ -4418,30 +4406,30 @@ wrap_y: { eor #$80 !: bpl b2 - //SEG112 [62] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] + //SEG110 [61] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] b3_from_b1: b3_from_b4: - //SEG113 [62] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy + //SEG111 [61] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy jmp b3 - //SEG114 wrap_y::@3 + //SEG112 wrap_y::@3 b3: - //SEG115 [63] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 + //SEG113 [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 lda y+1 bmi b4 jmp b5 - //SEG116 wrap_y::@5 + //SEG114 wrap_y::@5 b5: - //SEG117 [64] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuz1=_byte_vwsz2 + //SEG115 [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuz1=_byte_vwsz2 lda y sta return_2 jmp breturn - //SEG118 wrap_y::@return + //SEG116 wrap_y::@return breturn: - //SEG119 [65] return + //SEG117 [64] return rts - //SEG120 wrap_y::@4 + //SEG118 wrap_y::@4 b4: - //SEG121 [66] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 + //SEG119 [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 clc lda y adc #<$c8 @@ -4450,9 +4438,9 @@ wrap_y: { adc #>$c8 sta y+1 jmp b3_from_b4 - //SEG122 wrap_y::@2 + //SEG120 wrap_y::@2 b2: - //SEG123 [67] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 + //SEG121 [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 lda y sec sbc #<$c8 @@ -4462,7 +4450,7 @@ wrap_y: { sta y+1 jmp b1_from_b2 } -//SEG124 sin16s_gen2 +//SEG122 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -4477,11 +4465,11 @@ sin16s_gen2: { .label sintab = $f .label x = $b .label i = $11 - //SEG125 [69] call div32u16u - //SEG126 [157] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG123 [68] call div32u16u + //SEG124 [156] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u - //SEG127 [70] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG125 [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -4491,9 +4479,9 @@ sin16s_gen2: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b2 - //SEG128 sin16s_gen2::@2 + //SEG126 sin16s_gen2::@2 b2: - //SEG129 [71] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG127 [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -4502,19 +4490,19 @@ sin16s_gen2: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG130 [72] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] + //SEG128 [71] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] b1_from_b2: - //SEG131 [72] phi (word) sin16s_gen2::i#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG129 [71] phi (word) sin16s_gen2::i#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG132 [72] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[$200]) sin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG130 [71] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[$200]) sin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #sin sta sintab+1 - //SEG133 [72] phi (dword) sin16s_gen2::x#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG131 [71] phi (dword) sin16s_gen2::x#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4523,15 +4511,15 @@ sin16s_gen2: { sta x+3 jmp b1 // u[4.28] - //SEG134 [72] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] + //SEG132 [71] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] b1_from_b4: - //SEG135 [72] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy - //SEG136 [72] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy - //SEG137 [72] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy + //SEG133 [71] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy + //SEG134 [71] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy + //SEG135 [71] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG138 sin16s_gen2::@1 + //SEG136 sin16s_gen2::@1 b1: - //SEG139 [73] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG137 [72] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4540,24 +4528,24 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG140 [74] call sin16s + //SEG138 [73] call sin16s jsr sin16s - //SEG141 [75] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG139 [74] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b3 - //SEG142 sin16s_gen2::@3 + //SEG140 sin16s_gen2::@3 b3: - //SEG143 [76] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG141 [75] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta mul16s.a lda sin16s.return+1 sta mul16s.a+1 - //SEG144 [77] call mul16s + //SEG142 [76] call mul16s jsr mul16s - //SEG145 [78] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 + //SEG143 [77] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 lda mul16s.return sta mul16s.return_2 lda mul16s.return+1 @@ -4567,9 +4555,9 @@ sin16s_gen2: { lda mul16s.return+3 sta mul16s.return_2+3 jmp b4 - //SEG146 sin16s_gen2::@4 + //SEG144 sin16s_gen2::@4 b4: - //SEG147 [79] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 + //SEG145 [78] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 lda mul16s.return_2 sta _5 lda mul16s.return_2+1 @@ -4578,19 +4566,19 @@ sin16s_gen2: { sta _5+2 lda mul16s.return_2+3 sta _5+3 - //SEG148 [80] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG146 [79] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _8 lda _5+3 sta _8+1 - //SEG149 [81] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG147 [80] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG150 [82] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG148 [81] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -4598,7 +4586,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG151 [83] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG149 [82] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4612,12 +4600,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG152 [84] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG150 [83] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG153 [85] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG151 [84] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>SIN_SIZE bcc b1_from_b4 @@ -4627,12 +4615,12 @@ sin16s_gen2: { bcc b1_from_b4 !: jmp breturn - //SEG154 sin16s_gen2::@return + //SEG152 sin16s_gen2::@return breturn: - //SEG155 [86] return + //SEG153 [85] return rts } -//SEG156 mul16s +//SEG154 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($64) a) @@ -4643,16 +4631,16 @@ mul16s: { .label return = $78 .label a = $64 .label return_2 = $66 - //SEG157 [87] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG155 [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG158 [88] call mul16u - //SEG159 [98] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG156 [87] call mul16u + //SEG157 [97] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG160 [98] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - //SEG161 [98] phi (dword) mul16u::mb#0 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vduz1=vduc1 + //SEG158 [97] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + //SEG159 [97] phi (dword) mul16u::mb#0 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vduz1=vduc1 lda #sin16s_gen2.ampl @@ -4662,7 +4650,7 @@ mul16s: { lda #>sin16s_gen2.ampl>>$10 sta mul16u.mb+3 jsr mul16u - //SEG162 [89] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG160 [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -4672,9 +4660,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b4 - //SEG163 mul16s::@4 + //SEG161 mul16s::@4 b4: - //SEG164 [90] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG162 [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -4683,18 +4671,18 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //SEG165 [91] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG163 [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b4 jmp b3 - //SEG166 mul16s::@3 + //SEG164 mul16s::@3 b3: - //SEG167 [92] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG165 [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG168 [93] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG166 [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 lda _9 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG169 [94] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG167 [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG170 [95] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + //SEG168 [94] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] b1_from_b3: b1_from_b4: - //SEG171 [95] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + //SEG169 [94] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy jmp b1 - //SEG172 mul16s::@1 + //SEG170 mul16s::@1 b1: jmp b2 - //SEG173 mul16s::@2 + //SEG171 mul16s::@2 b2: - //SEG174 [96] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 + //SEG172 [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 lda m sta return lda m+1 @@ -4727,12 +4715,12 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG175 mul16s::@return + //SEG173 mul16s::@return breturn: - //SEG176 [97] return + //SEG174 [96] return rts } -//SEG177 mul16u +//SEG175 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($19) a, word zeropage($17) b) mul16u: { @@ -4743,44 +4731,44 @@ mul16u: { .label return = $70 .label b = $17 .label return_3 = $9d - //SEG178 [99] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG176 [98] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG179 [99] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG180 [99] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG177 [98] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG178 [98] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG181 [99] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG179 [98] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG182 mul16u::@1 + //SEG180 mul16u::@1 b1: - //SEG183 [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG181 [99] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG184 mul16u::@return + //SEG182 mul16u::@return breturn: - //SEG185 [101] return + //SEG183 [100] return rts - //SEG186 mul16u::@2 + //SEG184 mul16u::@2 b2: - //SEG187 [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG185 [101] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG188 [103] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 + //SEG186 [102] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG189 mul16u::@4 + //SEG187 mul16u::@4 b4: - //SEG190 [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG188 [103] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4794,29 +4782,29 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG191 [105] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG189 [104] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG192 [105] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG190 [104] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG193 mul16u::@3 + //SEG191 mul16u::@3 b3: - //SEG194 [106] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG192 [105] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG195 [107] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG193 [106] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG196 [99] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG194 [98] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG197 [99] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG198 [99] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG199 [99] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG195 [98] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG196 [98] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG197 [98] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG200 sin16s +//SEG198 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -4838,7 +4826,7 @@ sin16s: { .label sinx = $28 .label isUpper = $23 .label return_5 = $28 - //SEG201 [108] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG199 [107] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -4856,9 +4844,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG202 sin16s::@4 + //SEG200 sin16s::@4 b4: - //SEG203 [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG201 [108] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG204 [110] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG202 [109] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG205 [110] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG203 [109] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG206 [110] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG204 [109] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG207 [110] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG205 [109] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG208 [110] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG206 [109] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG209 [110] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG207 [109] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG210 sin16s::@1 + //SEG208 sin16s::@1 b1: - //SEG211 [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG209 [110] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -4906,9 +4894,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG212 sin16s::@5 + //SEG210 sin16s::@5 b5: - //SEG213 [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG211 [111] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG214 [113] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG212 [112] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG215 [113] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG213 [112] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG216 sin16s::@2 + //SEG214 sin16s::@2 b2: - //SEG217 [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 + //SEG215 [113] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3 lda x sta _4 lda x+1 @@ -4946,107 +4934,107 @@ sin16s: { rol _4+3 dey bne !- - //SEG218 [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG216 [114] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG219 [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG217 [115] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG220 [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG218 [116] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG221 [118] call mulu16_sel - //SEG222 [148] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG219 [117] call mulu16_sel + //SEG220 [147] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG223 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG221 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG224 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG225 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG222 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG223 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG226 [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG224 [118] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return lda mulu16_sel.return_12+1 sta mulu16_sel.return+1 jmp b7 - //SEG227 sin16s::@7 + //SEG225 sin16s::@7 b7: - //SEG228 [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG226 [119] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG229 [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG227 [120] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG230 [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG228 [121] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG231 [123] call mulu16_sel - //SEG232 [148] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG229 [122] call mulu16_sel + //SEG230 [147] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG233 [148] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG231 [147] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG234 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG235 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG232 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG233 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG236 [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG234 [123] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_1 lda mulu16_sel.return_12+1 sta mulu16_sel.return_1+1 jmp b8 - //SEG237 sin16s::@8 + //SEG235 sin16s::@8 b8: - //SEG238 [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG236 [124] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 lda mulu16_sel.return_1 sta x3 lda mulu16_sel.return_1+1 sta x3+1 - //SEG239 [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG237 [125] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG240 [127] call mulu16_sel - //SEG241 [148] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG238 [126] call mulu16_sel + //SEG239 [147] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG242 [148] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG240 [147] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG243 [148] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG241 [147] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG244 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG242 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG245 [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG243 [127] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_2 lda mulu16_sel.return_12+1 sta mulu16_sel.return_2+1 jmp b9 - //SEG246 sin16s::@9 + //SEG244 sin16s::@9 b9: - //SEG247 [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG245 [128] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 lda mulu16_sel.return_2 sta x3_6 lda mulu16_sel.return_2+1 sta x3_6+1 - //SEG248 [130] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG246 [129] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -5054,71 +5042,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG249 [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG247 [130] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG250 [132] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG248 [131] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG251 [133] call mulu16_sel - //SEG252 [148] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG249 [132] call mulu16_sel + //SEG250 [147] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG253 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG251 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG254 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG255 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG252 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG253 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG256 [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG254 [133] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_10 lda mulu16_sel.return_12+1 sta mulu16_sel.return_10+1 jmp b10 - //SEG257 sin16s::@10 + //SEG255 sin16s::@10 b10: - //SEG258 [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG256 [134] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 lda mulu16_sel.return_10 sta x4 lda mulu16_sel.return_10+1 sta x4+1 - //SEG259 [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG257 [135] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG260 [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG258 [136] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG261 [138] call mulu16_sel - //SEG262 [148] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG259 [137] call mulu16_sel + //SEG260 [147] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG263 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG261 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG264 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG265 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG262 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG263 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG266 [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG264 [138] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_11 lda mulu16_sel.return_12+1 sta mulu16_sel.return_11+1 jmp b11 - //SEG267 sin16s::@11 + //SEG265 sin16s::@11 b11: - //SEG268 [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG266 [139] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 lda mulu16_sel.return_11 sta x5 lda mulu16_sel.return_11+1 sta x5+1 - //SEG269 [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 + //SEG267 [140] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4 lda x5+1 lsr sta x5_128+1 @@ -5131,7 +5119,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG270 [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG268 [141] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -5139,14 +5127,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG271 [143] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG269 [142] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG272 sin16s::@6 + //SEG270 sin16s::@6 b6: - //SEG273 [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG271 [143] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda #0 sbc usinx_1 @@ -5154,28 +5142,28 @@ sin16s: { lda #0 sbc usinx_1+1 sta sinx+1 - //SEG274 [145] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG272 [144] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG275 [145] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG273 [144] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG276 sin16s::@3 + //SEG274 sin16s::@3 b3: jmp breturn - //SEG277 sin16s::@return + //SEG275 sin16s::@return breturn: - //SEG278 [146] return + //SEG276 [145] return rts - //SEG279 sin16s::@12 + //SEG277 sin16s::@12 b12: - //SEG280 [147] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG278 [146] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b12 } -//SEG281 mulu16_sel +//SEG279 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($2a) v1, word zeropage($2c) v2, byte zeropage($2e) select) @@ -5191,21 +5179,21 @@ mulu16_sel: { .label return_11 = $95 .label select = $2e .label return_12 = $a9 - //SEG282 [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG280 [148] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG283 [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG281 [149] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG284 [151] call mul16u - //SEG285 [98] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG282 [150] call mul16u + //SEG283 [97] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG286 [98] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG287 [98] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- vduz1=vwuz2 + //SEG284 [97] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG285 [97] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -5214,7 +5202,7 @@ mulu16_sel: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG288 [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG286 [151] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -5224,9 +5212,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b1 - //SEG289 mulu16_sel::@1 + //SEG287 mulu16_sel::@1 b1: - //SEG290 [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG288 [152] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -5235,7 +5223,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG291 [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG289 [153] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -5254,18 +5242,18 @@ mulu16_sel: { dex bne !- !e: - //SEG292 [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG290 [154] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_12 lda _1+3 sta return_12+1 jmp breturn - //SEG293 mulu16_sel::@return + //SEG291 mulu16_sel::@return breturn: - //SEG294 [156] return + //SEG292 [155] return rts } -//SEG295 div32u16u +//SEG293 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { @@ -5273,62 +5261,62 @@ div32u16u: { .label quotient_lo = $b1 .label return = $b3 .label return_2 = $5a - //SEG296 [158] call divr16u - //SEG297 [167] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG294 [157] call divr16u + //SEG295 [166] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG298 [167] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG296 [166] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG299 [167] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG297 [166] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG300 [159] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG298 [158] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b1 - //SEG301 div32u16u::@1 + //SEG299 div32u16u::@1 b1: - //SEG302 [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG300 [159] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta quotient_hi lda divr16u.return_2+1 sta quotient_hi+1 - //SEG303 [161] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG301 [160] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG304 [162] call divr16u - //SEG305 [167] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG302 [161] call divr16u + //SEG303 [166] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG306 [167] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG304 [166] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG307 [167] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG305 [166] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG308 [163] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG306 [162] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b2 - //SEG309 div32u16u::@2 + //SEG307 div32u16u::@2 b2: - //SEG310 [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG308 [163] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta quotient_lo lda divr16u.return_3+1 sta quotient_lo+1 - //SEG311 [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG309 [164] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -5338,12 +5326,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG312 div32u16u::@return + //SEG310 div32u16u::@return breturn: - //SEG313 [166] return + //SEG311 [165] return rts } -//SEG314 divr16u +//SEG312 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -5359,63 +5347,63 @@ divr16u: { .label return = $33 .label return_2 = $ab .label return_3 = $af - //SEG315 [168] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG313 [167] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG316 [168] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG314 [167] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG317 [168] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG315 [167] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG318 [168] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG319 [168] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG316 [167] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG317 [167] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG320 [168] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG318 [167] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG321 [168] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG322 [168] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG323 [168] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG324 [168] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG319 [167] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG320 [167] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG321 [167] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG322 [167] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG325 divr16u::@1 + //SEG323 divr16u::@1 b1: - //SEG326 [169] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG324 [168] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG327 [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG325 [169] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG328 [171] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG326 [170] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG329 [172] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG327 [171] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG330 divr16u::@4 + //SEG328 divr16u::@4 b4: - //SEG331 [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG329 [172] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG332 [174] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG330 [173] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG333 [174] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG331 [173] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG334 divr16u::@2 + //SEG332 divr16u::@2 b2: - //SEG335 [175] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG333 [174] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG336 [176] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG334 [175] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG337 [177] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG335 [176] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3_from_b2 @@ -5425,14 +5413,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG338 divr16u::@5 + //SEG336 divr16u::@5 b5: - //SEG339 [178] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG337 [177] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG340 [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG338 [178] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #SIN_SIZE sta rem+1 - //SEG341 [180] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG339 [179] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG342 [180] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG343 [180] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG340 [179] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG341 [179] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG344 divr16u::@3 + //SEG342 divr16u::@3 b3: - //SEG345 [181] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG343 [180] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG346 [182] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG344 [181] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp b6 - //SEG347 divr16u::@6 + //SEG345 divr16u::@6 b6: - //SEG348 [183] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG346 [182] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG349 divr16u::@return + //SEG347 divr16u::@return breturn: - //SEG350 [184] return + //SEG348 [183] return rts } -//SEG351 bitmap_clear +//SEG349 bitmap_clear // Clear all graphics on the bitmap // bgcol - the background color to fill the screen with // fgcol - the foreground color to fill the screen with bitmap_clear: { .const col = WHITE*$10 - //SEG352 [186] call memset - //SEG353 [190] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + //SEG350 [185] call memset + //SEG351 [189] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - //SEG354 [190] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 + //SEG352 [189] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 lda #col sta memset.c - //SEG355 [190] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#1] -- vwuz1=vwuc1 + //SEG353 [189] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#1] -- vwuz1=vwuc1 lda #<$3e8 sta memset.num lda #>$3e8 sta memset.num+1 - //SEG356 [190] phi (void*) memset::str#2 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#2] -- pvoz1=pvoc1 + //SEG354 [189] phi (void*) memset::str#2 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#2] -- pvoz1=pvoc1 lda #SCREEN sta memset.str+1 jsr memset - //SEG357 [187] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG355 [186] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: jmp b1 - //SEG358 bitmap_clear::@1 + //SEG356 bitmap_clear::@1 b1: - //SEG359 [188] call memset - //SEG360 [190] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + //SEG357 [187] call memset + //SEG358 [189] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from_b1: - //SEG361 [190] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 + //SEG359 [189] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 lda #0 sta memset.c - //SEG362 [190] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#1] -- vwuz1=vwuc1 + //SEG360 [189] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#1] -- vwuz1=vwuc1 lda #<$1f40 sta memset.num lda #>$1f40 sta memset.num+1 - //SEG363 [190] phi (void*) memset::str#2 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#2] -- pvoz1=pvoc1 + //SEG361 [189] phi (void*) memset::str#2 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#2] -- pvoz1=pvoc1 lda #BITMAP sta memset.str+1 jsr memset jmp breturn - //SEG364 bitmap_clear::@return + //SEG362 bitmap_clear::@return breturn: - //SEG365 [189] return + //SEG363 [188] return rts } -//SEG366 memset +//SEG364 memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // memset(void* zeropage($36) str, byte zeropage($3a) c, word zeropage($38) num) memset: { @@ -5528,7 +5516,7 @@ memset: { .label str = $36 .label num = $38 .label c = $3a - //SEG367 [191] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + //SEG365 [190] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 lda str clc adc num @@ -5536,28 +5524,28 @@ memset: { lda str+1 adc num+1 sta end+1 - //SEG368 [192] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 -- pbuz1=pbuz2 + //SEG366 [191] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 -- pbuz1=pbuz2 lda str sta dst lda str+1 sta dst+1 - //SEG369 [193] phi from memset memset::@1 to memset::@1 [phi:memset/memset::@1->memset::@1] + //SEG367 [192] phi from memset memset::@1 to memset::@1 [phi:memset/memset::@1->memset::@1] b1_from_memset: b1_from_b1: - //SEG370 [193] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset/memset::@1->memset::@1#0] -- register_copy + //SEG368 [192] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset/memset::@1->memset::@1#0] -- register_copy jmp b1 - //SEG371 memset::@1 + //SEG369 memset::@1 b1: - //SEG372 [194] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuz2 + //SEG370 [193] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (dst),y - //SEG373 [195] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + //SEG371 [194] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG374 [196] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG372 [195] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 -- pbuz1_neq_pbuz2_then_la1 lda dst+1 cmp end+1 bne b1_from_b1 @@ -5565,12 +5553,12 @@ memset: { cmp end bne b1_from_b1 jmp breturn - //SEG375 memset::@return + //SEG373 memset::@return breturn: - //SEG376 [197] return + //SEG374 [196] return rts } -//SEG377 bitmap_init +//SEG375 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _4 = $be @@ -5581,103 +5569,103 @@ bitmap_init: { .label x = $3e .label y = $3f .label yoffs = $40 - //SEG378 [199] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG376 [198] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG379 [199] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG377 [198] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG380 [199] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + //SEG378 [198] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #$80 sta bits jmp b1 - //SEG381 [199] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG379 [198] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG382 [199] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG383 [199] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG380 [198] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG381 [198] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG384 bitmap_init::@1 + //SEG382 bitmap_init::@1 b1: - //SEG385 [200] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG383 [199] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta bitmap_plot_bit,y - //SEG386 [201] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + //SEG384 [200] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG387 [202] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 + //SEG385 [201] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b6_from_b1 - //SEG388 [204] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG386 [203] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG389 [204] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG387 [203] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG390 [203] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + //SEG388 [202] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] b6_from_b1: jmp b6 - //SEG391 bitmap_init::@6 + //SEG389 bitmap_init::@6 b6: - //SEG392 [204] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + //SEG390 [203] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] b2_from_b6: - //SEG393 [204] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + //SEG391 [203] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp b2 - //SEG394 bitmap_init::@2 + //SEG392 bitmap_init::@2 b2: - //SEG395 [205] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG393 [204] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG396 [206] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + //SEG394 [205] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG397 [207] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG395 [206] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG398 [207] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG396 [206] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG399 [207] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + //SEG397 [206] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG400 [207] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG398 [206] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG401 [207] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG402 [207] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG399 [206] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG400 [206] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG403 bitmap_init::@3 + //SEG401 bitmap_init::@3 b3: - //SEG404 [208] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG402 [207] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _7 - //SEG405 [209] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG403 [208] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - //SEG406 [210] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + //SEG404 [209] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _7 ora _4 sta _5 - //SEG407 [211] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG405 [210] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy y sta bitmap_plot_ylo,y - //SEG408 [212] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG406 [211] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - //SEG409 [213] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG407 [212] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy y sta bitmap_plot_yhi,y - //SEG410 [214] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG408 [213] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp _7 bne b4_from_b3 jmp b5 - //SEG411 bitmap_init::@5 + //SEG409 bitmap_init::@5 b5: - //SEG412 [215] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG410 [214] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -5685,258 +5673,258 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG413 [216] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + //SEG411 [215] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] b4_from_b3: b4_from_b5: - //SEG414 [216] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + //SEG412 [215] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG415 bitmap_init::@4 + //SEG413 bitmap_init::@4 b4: - //SEG416 [217] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG414 [216] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG417 [218] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + //SEG415 [217] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG418 bitmap_init::@return + //SEG416 bitmap_init::@return breturn: - //SEG419 [219] return + //SEG417 [218] return rts } -//SEG420 File Data +//SEG418 File Data // Tables for the plotter - initialized by calling bitmap_init(); bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 sin: .fill 2*$200, 0 -.pc = sin2 "sin2" - .for(var i=0; i<512; i++) { +sin2: +.for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp ZP_BYTE:190 [ bitmap_init::$4 ] has ALU potential. -Statement [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [25] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ) always clobbers reg byte a -Statement [26] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ) always clobbers reg byte a -Statement [27] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ) always clobbers reg byte a reg byte y -Statement [28] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ) always clobbers reg byte a -Statement [32] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [11] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [24] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ) always clobbers reg byte a +Statement [25] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ) always clobbers reg byte a +Statement [26] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ) always clobbers reg byte a reg byte y +Statement [27] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ) always clobbers reg byte a +Statement [31] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ render_sine::ypos#0 ] -Statement [35] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ) always clobbers reg byte a -Statement [36] (signed word*~) render_sine::$3 ← (const signed word*) sin2#0 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ) always clobbers reg byte a -Statement [37] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ) always clobbers reg byte a reg byte y -Statement [38] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ) always clobbers reg byte a -Statement [42] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [34] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ) always clobbers reg byte a +Statement [35] (signed word*~) render_sine::$3 ← (const signed word[$200]) sin2#0 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ) always clobbers reg byte a +Statement [36] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ) always clobbers reg byte a reg byte y +Statement [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ) always clobbers reg byte a +Statement [41] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ render_sine::ypos2#0 ] -Statement [46] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ) always clobbers reg byte a -Statement [50] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ( main:3::render_sine:21 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ) always clobbers reg byte a -Statement [53] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [54] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [55] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [56] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [57] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a reg byte y -Statement [61] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] ) always clobbers reg byte a -Statement [63] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] ) always clobbers reg byte a -Statement [64] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ) always clobbers reg byte a -Statement [66] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] ) always clobbers reg byte a -Statement [67] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] ) always clobbers reg byte a -Statement [70] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:19 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [71] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [73] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [75] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [76] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [78] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [79] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a -Statement [80] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a -Statement [81] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y -Statement [82] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [83] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [85] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a -Statement [87] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [89] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [90] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [91] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [92] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [93] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [94] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [96] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:19::mul16s:77::mul16u:88 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [45] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ) always clobbers reg byte a +Statement [49] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ( main:2::render_sine:20 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ) always clobbers reg byte a +Statement [52] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a reg byte y +Statement [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] ) always clobbers reg byte a +Statement [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] ) always clobbers reg byte a +Statement [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ) always clobbers reg byte a +Statement [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] ) always clobbers reg byte a +Statement [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] ) always clobbers reg byte a +Statement [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen2:18 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a +Statement [72] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [74] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [75] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a +Statement [77] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a +Statement [78] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a +Statement [79] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a +Statement [80] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y +Statement [81] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [82] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [84] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a +Statement [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a +Statement [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [99] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:18::mul16s:76::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ mulu16_sel::select#5 ] -Statement [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:19::mul16s:77::mul16u:88 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:19::mul16s:77::mul16u:88 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [108] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [101] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen2:18::mul16s:76::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [103] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen2:18::mul16s:76::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [107] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [108] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [110] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [111] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [113] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Statement [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [130] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [132] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [147] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [159] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [161] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [114] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [115] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [116] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [118] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [119] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [120] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [121] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [123] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [124] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [125] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [127] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [128] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [129] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [130] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [133] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [134] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [135] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [136] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [138] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [139] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [140] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a +Statement [141] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [143] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [146] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [148] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [149] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [151] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [152] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [153] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [154] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [158] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [159] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [160] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [162] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [163] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [164] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [169] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] -Statement [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [177] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [183] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 [ memset::str#2 memset::c#3 memset::end#0 ] ( main:3::bitmap_clear:17::memset:186 [ memset::str#2 memset::c#3 memset::end#0 ] main:3::bitmap_clear:17::memset:188 [ memset::str#2 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [172] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [176] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [178] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [182] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [190] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 [ memset::str#2 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:16::memset:185 [ memset::str#2 memset::c#3 memset::end#0 ] main:2::bitmap_clear:16::memset:187 [ memset::str#2 memset::c#3 memset::end#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:58 [ memset::c#3 ] -Statement [192] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:3::bitmap_clear:17::memset:186 [ memset::c#3 memset::end#0 memset::dst#3 ] main:3::bitmap_clear:17::memset:188 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a -Statement [194] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:17::memset:186 [ memset::c#3 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:17::memset:188 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [191] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:16::memset:185 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:16::memset:187 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [193] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:185 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:16::memset:187 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:58 [ memset::c#3 ] -Statement [196] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:3::bitmap_clear:17::memset:186 [ memset::c#3 memset::end#0 memset::dst#1 ] main:3::bitmap_clear:17::memset:188 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a -Statement [215] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:15 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [195] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:16::memset:185 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:16::memset:187 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [214] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a -Statement [25] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ) always clobbers reg byte a -Statement [26] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ) always clobbers reg byte a -Statement [27] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ) always clobbers reg byte a reg byte y -Statement [28] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ) always clobbers reg byte a -Statement [32] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ) always clobbers reg byte a -Statement [35] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ) always clobbers reg byte a -Statement [36] (signed word*~) render_sine::$3 ← (const signed word*) sin2#0 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ) always clobbers reg byte a -Statement [37] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ) always clobbers reg byte a reg byte y -Statement [38] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ) always clobbers reg byte a -Statement [42] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ) always clobbers reg byte a -Statement [46] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:3::render_sine:21 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ) always clobbers reg byte a -Statement [50] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ( main:3::render_sine:21 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ) always clobbers reg byte a -Statement [53] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] ) always clobbers reg byte a -Statement [54] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [55] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [56] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [57] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:3::render_sine:21::bitmap_plot:34 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:3::render_sine:21::bitmap_plot:44 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a reg byte y -Statement [61] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] ) always clobbers reg byte a -Statement [63] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] ) always clobbers reg byte a -Statement [64] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ) always clobbers reg byte a -Statement [66] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] ) always clobbers reg byte a -Statement [67] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:3::render_sine:21::wrap_y:29 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] main:3::render_sine:21::wrap_y:39 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] ) always clobbers reg byte a -Statement [70] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:19 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [71] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [73] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [75] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [76] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [78] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [79] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a -Statement [80] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a -Statement [81] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y -Statement [82] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [83] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [85] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:19 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a -Statement [87] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [89] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [90] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [91] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [92] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [93] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [94] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [96] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:19::mul16s:77 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:19::mul16s:77::mul16u:88 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:19::mul16s:77::mul16u:88 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:19::mul16s:77::mul16u:88 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138::mul16u:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [108] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y -Statement [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [130] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [132] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a -Statement [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [147] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:19::sin16s:74 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:133 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:19::sin16s:74::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [159] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [161] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:19::div32u16u:69 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [177] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [183] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:19::div32u16u:69::divr16u:158 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:19::div32u16u:69::divr16u:162 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 [ memset::str#2 memset::c#3 memset::end#0 ] ( main:3::bitmap_clear:17::memset:186 [ memset::str#2 memset::c#3 memset::end#0 ] main:3::bitmap_clear:17::memset:188 [ memset::str#2 memset::c#3 memset::end#0 ] ) always clobbers reg byte a -Statement [192] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:3::bitmap_clear:17::memset:186 [ memset::c#3 memset::end#0 memset::dst#3 ] main:3::bitmap_clear:17::memset:188 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a -Statement [194] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:17::memset:186 [ memset::c#3 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:17::memset:188 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y -Statement [196] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:3::bitmap_clear:17::memset:186 [ memset::c#3 memset::end#0 memset::dst#1 ] main:3::bitmap_clear:17::memset:188 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a -Statement [208] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:15 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [215] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:15 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [11] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [24] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$10 ] ) always clobbers reg byte a +Statement [25] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$0 ] ) always clobbers reg byte a +Statement [26] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin_val#0 ] ) always clobbers reg byte a reg byte y +Statement [27] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#0 ] ) always clobbers reg byte a +Statement [31] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos#0 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [34] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$11 ] ) always clobbers reg byte a +Statement [35] (signed word*~) render_sine::$3 ← (const signed word[$200]) sin2#0 + (word~) render_sine::$11 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::$3 ] ) always clobbers reg byte a +Statement [36] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::sin2_val#0 ] ) always clobbers reg byte a reg byte y +Statement [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#1 ] ) always clobbers reg byte a +Statement [41] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#3 render_sine::ypos2#0 bitmap_plot::x#1 ] ) always clobbers reg byte a +Statement [45] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ( main:2::render_sine:20 [ render_sine::sin_idx#2 render_sine::xpos#1 ] ) always clobbers reg byte a +Statement [49] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ( main:2::render_sine:20 [ render_sine::sin_idx#1 render_sine::xpos#8 ] ) always clobbers reg byte a +Statement [52] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) [ bitmap_plot::x#2 bitmap_plot::plotter#0 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 [ bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#2 bitmap_plot::plotter#1 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::x#2 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::render_sine:20::bitmap_plot:33 [ render_sine::sin_idx#2 render_sine::xpos#3 ] main:2::render_sine:20::bitmap_plot:43 [ render_sine::sin_idx#2 render_sine::xpos#3 ] ) always clobbers reg byte a reg byte y +Statement [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 [ wrap_y::y#4 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#4 ] ) always clobbers reg byte a +Statement [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 [ wrap_y::y#6 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#6 ] ) always clobbers reg byte a +Statement [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 [ wrap_y::return#2 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::return#2 ] ) always clobbers reg byte a +Statement [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 [ wrap_y::y#3 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#3 ] ) always clobbers reg byte a +Statement [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 [ wrap_y::y#2 ] ( main:2::render_sine:20::wrap_y:28 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] main:2::render_sine:20::wrap_y:38 [ render_sine::sin_idx#2 render_sine::xpos#3 wrap_y::y#2 ] ) always clobbers reg byte a +Statement [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen2:18 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a +Statement [72] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [74] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [75] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a +Statement [77] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a +Statement [78] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a +Statement [79] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a +Statement [80] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y +Statement [81] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [82] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [84] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:2::sin16s_gen2:18 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a +Statement [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#1 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#1 ] ) always clobbers reg byte a +Statement [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::sin16s_gen2:18::mul16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [99] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:18::mul16s:76::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [101] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen2:18::mul16s:76::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [103] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen2:18::mul16s:76::mul16u:87 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137::mul16u:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [107] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [108] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [110] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [111] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [113] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [114] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [115] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [116] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [118] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [119] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [120] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [121] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [123] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [124] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [125] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [127] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [128] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [129] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [130] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [133] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [134] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [135] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [136] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [138] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [139] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [140] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a +Statement [141] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [143] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [146] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen2:18::sin16s:73 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [148] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [149] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [151] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [152] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [153] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [154] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:126 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:18::sin16s:73::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [158] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [159] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [160] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [162] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [163] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [164] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen2:18::div32u16u:68 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [169] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [172] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [176] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [178] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [182] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:18::div32u16u:68::divr16u:157 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen2:18::div32u16u:68::divr16u:161 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [190] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 [ memset::str#2 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:16::memset:185 [ memset::str#2 memset::c#3 memset::end#0 ] main:2::bitmap_clear:16::memset:187 [ memset::str#2 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [191] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:16::memset:185 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:16::memset:187 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [193] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:16::memset:185 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:16::memset:187 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [195] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:16::memset:185 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:16::memset:187 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [207] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [214] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:14 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , @@ -6045,30 +6033,30 @@ Uplift Scope [] 0.8: zp ZP_WORD:185 [ rem16u#1 ] Uplift Scope [bitmap_clear] Uplift Scope [main] -Uplifting [mul16u] best 33662 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#1 ] zp ZP_DWORD:112 [ mul16u::return#2 ] zp ZP_DWORD:157 [ mul16u::return#3 ] -Uplifting [wrap_y] best 33479 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] -Uplifting [divr16u] best 33269 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:171 [ divr16u::return#2 ] zp ZP_WORD:175 [ divr16u::return#3 ] -Uplifting [render_sine] best 33189 combination zp ZP_WORD:66 [ render_sine::$10 ] zp ZP_WORD:68 [ render_sine::$0 ] zp ZP_WORD:70 [ render_sine::sin_val#0 ] zp ZP_WORD:74 [ render_sine::$11 ] zp ZP_WORD:76 [ render_sine::$3 ] zp ZP_WORD:78 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] -Uplifting [bitmap_init] best 32679 combination zp ZP_WORD:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:191 [ bitmap_init::$5 ] zp ZP_BYTE:192 [ bitmap_init::$6 ] zp ZP_BYTE:189 [ bitmap_init::$7 ] +Uplifting [mul16u] best 31072 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#1 ] zp ZP_DWORD:112 [ mul16u::return#2 ] zp ZP_DWORD:157 [ mul16u::return#3 ] +Uplifting [wrap_y] best 30889 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] +Uplifting [divr16u] best 30679 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:171 [ divr16u::return#2 ] zp ZP_WORD:175 [ divr16u::return#3 ] +Uplifting [render_sine] best 30599 combination zp ZP_WORD:66 [ render_sine::$10 ] zp ZP_WORD:68 [ render_sine::$0 ] zp ZP_WORD:70 [ render_sine::sin_val#0 ] zp ZP_WORD:74 [ render_sine::$11 ] zp ZP_WORD:76 [ render_sine::$3 ] zp ZP_WORD:78 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] +Uplifting [bitmap_init] best 30089 combination zp ZP_WORD:64 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:191 [ bitmap_init::$5 ] zp ZP_BYTE:192 [ bitmap_init::$6 ] zp ZP_BYTE:189 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 15360 possible. -Uplifting [bitmap_plot] best 32612 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:84 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:86 [ bitmap_plot::plotter#1 ] zp ZP_WORD:82 [ bitmap_plot::plotter#0 ] -Uplifting [sin16s] best 32612 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:98 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:125 [ sin16s::$4 ] zp ZP_WORD:133 [ sin16s::x2#0 ] zp ZP_WORD:141 [ sin16s::x3_6#0 ] zp ZP_WORD:147 [ sin16s::x4#0 ] zp ZP_WORD:151 [ sin16s::x5#0 ] zp ZP_WORD:153 [ sin16s::x5_128#0 ] zp ZP_WORD:137 [ sin16s::x3#0 ] zp ZP_WORD:155 [ sin16s::usinx#1 ] zp ZP_WORD:129 [ sin16s::x1#0 ] zp ZP_WORD:143 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 32596 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:131 [ mulu16_sel::return#0 ] zp ZP_WORD:135 [ mulu16_sel::return#1 ] zp ZP_WORD:139 [ mulu16_sel::return#2 ] zp ZP_WORD:145 [ mulu16_sel::return#10 ] zp ZP_WORD:149 [ mulu16_sel::return#11 ] zp ZP_DWORD:161 [ mulu16_sel::$0 ] zp ZP_DWORD:165 [ mulu16_sel::$1 ] zp ZP_WORD:169 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [sin16s_gen2] best 32596 combination zp ZP_DWORD:106 [ sin16s_gen2::$5 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:110 [ sin16s_gen2::$8 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:94 [ sin16s_gen2::step#0 ] -Uplifting [mul16s] best 32596 combination zp ZP_DWORD:102 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:120 [ mul16s::return#0 ] zp ZP_WORD:116 [ mul16s::$9 ] zp ZP_WORD:118 [ mul16s::$16 ] zp ZP_WORD:100 [ mul16s::a#0 ] -Uplifting [memset] best 32580 combination zp ZP_WORD:59 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:187 [ memset::end#0 ] zp ZP_WORD:56 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:54 [ memset::str#2 ] -Uplifting [div32u16u] best 32580 combination zp ZP_DWORD:90 [ div32u16u::return#2 ] zp ZP_WORD:177 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:179 [ div32u16u::return#0 ] zp ZP_WORD:173 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 32580 combination zp ZP_WORD:185 [ rem16u#1 ] -Uplifting [bitmap_clear] best 32580 combination -Uplifting [main] best 32580 combination +Uplifting [bitmap_plot] best 30022 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:84 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:86 [ bitmap_plot::plotter#1 ] zp ZP_WORD:82 [ bitmap_plot::plotter#0 ] +Uplifting [sin16s] best 30022 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:98 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:125 [ sin16s::$4 ] zp ZP_WORD:133 [ sin16s::x2#0 ] zp ZP_WORD:141 [ sin16s::x3_6#0 ] zp ZP_WORD:147 [ sin16s::x4#0 ] zp ZP_WORD:151 [ sin16s::x5#0 ] zp ZP_WORD:153 [ sin16s::x5_128#0 ] zp ZP_WORD:137 [ sin16s::x3#0 ] zp ZP_WORD:155 [ sin16s::usinx#1 ] zp ZP_WORD:129 [ sin16s::x1#0 ] zp ZP_WORD:143 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 30006 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:131 [ mulu16_sel::return#0 ] zp ZP_WORD:135 [ mulu16_sel::return#1 ] zp ZP_WORD:139 [ mulu16_sel::return#2 ] zp ZP_WORD:145 [ mulu16_sel::return#10 ] zp ZP_WORD:149 [ mulu16_sel::return#11 ] zp ZP_DWORD:161 [ mulu16_sel::$0 ] zp ZP_DWORD:165 [ mulu16_sel::$1 ] zp ZP_WORD:169 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen2] best 30006 combination zp ZP_DWORD:106 [ sin16s_gen2::$5 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:110 [ sin16s_gen2::$8 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:94 [ sin16s_gen2::step#0 ] +Uplifting [mul16s] best 30006 combination zp ZP_DWORD:102 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:120 [ mul16s::return#0 ] zp ZP_WORD:116 [ mul16s::$9 ] zp ZP_WORD:118 [ mul16s::$16 ] zp ZP_WORD:100 [ mul16s::a#0 ] +Uplifting [memset] best 29990 combination zp ZP_WORD:59 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:187 [ memset::end#0 ] zp ZP_WORD:56 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:54 [ memset::str#2 ] +Uplifting [div32u16u] best 29990 combination zp ZP_DWORD:90 [ div32u16u::return#2 ] zp ZP_WORD:177 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:179 [ div32u16u::return#0 ] zp ZP_WORD:173 [ div32u16u::quotient_hi#0 ] +Uplifting [] best 29990 combination zp ZP_WORD:185 [ rem16u#1 ] +Uplifting [bitmap_clear] best 29990 combination +Uplifting [main] best 29990 combination Attempting to uplift remaining variables inzp ZP_BYTE:191 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 32520 combination reg byte a [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 29930 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:192 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 32460 combination reg byte a [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 29870 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:189 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 32460 combination zp ZP_BYTE:189 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 29870 combination zp ZP_BYTE:189 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 32460 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 29870 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] ] with [ zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:155 [ sin16s::usinx#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:137 [ sin16s::x3#0 ] ] - score: 2 @@ -6178,116 +6166,111 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 .label BITMAP = $2000 .const SIN_SIZE = $200 - .label sin2 = $1400 .label rem16u = $25 //SEG3 @begin bbegin: +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: jmp b1 -//SEG4 @1 +//SEG5 @1 b1: -//SEG5 kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} -//SEG6 [2] phi from @1 to @2 [phi:@1->@2] -b2_from_b1: - jmp b2 -//SEG7 @2 -b2: -//SEG8 [3] call main +//SEG6 [2] call main jsr main -//SEG9 [4] phi from @2 to @end [phi:@2->@end] -bend_from_b2: +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: jmp bend -//SEG10 @end +//SEG8 @end bend: -//SEG11 main +//SEG9 main main: { .const vicSelectGfxBank1_toDd001_return = 3 .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f - //SEG12 asm { sei } + //SEG10 asm { sei } sei - //SEG13 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable normal interrupt // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG14 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG15 [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 jmp vicSelectGfxBank1 - //SEG16 main::vicSelectGfxBank1 + //SEG14 main::vicSelectGfxBank1 vicSelectGfxBank1: - //SEG17 [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG15 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG18 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: jmp vicSelectGfxBank1_toDd001 - //SEG19 main::vicSelectGfxBank1_toDd001 + //SEG17 main::vicSelectGfxBank1_toDd001 vicSelectGfxBank1_toDd001: jmp vicSelectGfxBank1_b1 - //SEG20 main::vicSelectGfxBank1_@1 + //SEG18 main::vicSelectGfxBank1_@1 vicSelectGfxBank1_b1: - //SEG21 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A jmp b2 - //SEG22 main::@2 + //SEG20 main::@2 b2: - //SEG23 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG21 [11] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta D016 - //SEG24 [13] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] + //SEG22 [12] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] toD0181_from_b2: jmp toD0181 - //SEG25 main::toD0181 + //SEG23 main::toD0181 toD0181: jmp b3 - //SEG26 main::@3 + //SEG24 main::@3 b3: - //SEG27 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG25 [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG28 [15] call bitmap_init - //SEG29 [198] phi from main::@3 to bitmap_init [phi:main::@3->bitmap_init] + //SEG26 [14] call bitmap_init + //SEG27 [197] phi from main::@3 to bitmap_init [phi:main::@3->bitmap_init] bitmap_init_from_b3: jsr bitmap_init - //SEG30 [16] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG28 [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] b4_from_b3: jmp b4 - //SEG31 main::@4 + //SEG29 main::@4 b4: - //SEG32 [17] call bitmap_clear - //SEG33 [185] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] + //SEG30 [16] call bitmap_clear + //SEG31 [184] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] bitmap_clear_from_b4: jsr bitmap_clear - //SEG34 [18] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG32 [17] phi from main::@4 to main::@5 [phi:main::@4->main::@5] b5_from_b4: jmp b5 - //SEG35 main::@5 + //SEG33 main::@5 b5: - //SEG36 [19] call sin16s_gen2 - //SEG37 [68] phi from main::@5 to sin16s_gen2 [phi:main::@5->sin16s_gen2] + //SEG34 [18] call sin16s_gen2 + //SEG35 [67] phi from main::@5 to sin16s_gen2 [phi:main::@5->sin16s_gen2] sin16s_gen2_from_b5: jsr sin16s_gen2 - //SEG38 [20] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG36 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG39 main::@6 + //SEG37 main::@6 b6: - //SEG40 [21] call render_sine - //SEG41 [23] phi from main::@6 to render_sine [phi:main::@6->render_sine] + //SEG38 [20] call render_sine + //SEG39 [22] phi from main::@6 to render_sine [phi:main::@6->render_sine] render_sine_from_b6: jsr render_sine jmp b1 - //SEG42 main::@1 + //SEG40 main::@1 b1: - //SEG43 [22] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG41 [21] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp b1 } -//SEG44 render_sine +//SEG42 render_sine render_sine: { .label _0 = 6 .label _3 = 6 @@ -6297,34 +6280,34 @@ render_sine: { .label sin2_val = 6 .label xpos = 4 .label sin_idx = 2 - //SEG45 [24] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] + //SEG43 [23] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] b1_from_render_sine: - //SEG46 [24] phi (word) render_sine::xpos#3 = (byte) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 + //SEG44 [23] phi (word) render_sine::xpos#3 = (byte) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 lda #0 sta xpos lda #0 sta xpos+1 - //SEG47 [24] phi (word) render_sine::sin_idx#2 = (byte) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 + //SEG45 [23] phi (word) render_sine::sin_idx#2 = (byte) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 lda #0 sta sin_idx lda #0 sta sin_idx+1 jmp b1 - //SEG48 [24] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] + //SEG46 [23] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] b1_from_b2: - //SEG49 [24] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy - //SEG50 [24] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy + //SEG47 [23] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy + //SEG48 [23] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy jmp b1 - //SEG51 render_sine::@1 + //SEG49 render_sine::@1 b1: - //SEG52 [25] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + //SEG50 [24] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _10 lda sin_idx+1 rol sta _10+1 - //SEG53 [26] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz1 + //SEG51 [25] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz1 clc lda _0 adc #sin sta _0+1 - //SEG54 [27] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) -- vwsz1=_deref_pwsz1 + //SEG52 [26] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin_val),y tax @@ -6340,37 +6323,37 @@ render_sine: { lda (sin_val),y stx sin_val sta sin_val+1 - //SEG55 [28] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 - //SEG56 [29] call wrap_y - //SEG57 [59] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] + //SEG53 [27] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 + //SEG54 [28] call wrap_y + //SEG55 [58] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] wrap_y_from_b1: - //SEG58 [59] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy + //SEG56 [58] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy jsr wrap_y - //SEG59 [30] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 + //SEG57 [29] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 jmp b3 - //SEG60 render_sine::@3 + //SEG58 render_sine::@3 b3: - //SEG61 [31] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa + //SEG59 [30] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa tax - //SEG62 [32] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 - //SEG63 [33] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 - //SEG64 [34] call bitmap_plot - //SEG65 [52] phi from render_sine::@3 to bitmap_plot [phi:render_sine::@3->bitmap_plot] + //SEG60 [31] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 + //SEG61 [32] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 + //SEG62 [33] call bitmap_plot + //SEG63 [51] phi from render_sine::@3 to bitmap_plot [phi:render_sine::@3->bitmap_plot] bitmap_plot_from_b3: - //SEG66 [52] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@3->bitmap_plot#0] -- register_copy - //SEG67 [52] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@3->bitmap_plot#1] -- register_copy + //SEG64 [51] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@3->bitmap_plot#0] -- register_copy + //SEG65 [51] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b4 - //SEG68 render_sine::@4 + //SEG66 render_sine::@4 b4: - //SEG69 [35] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + //SEG67 [34] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _11 lda sin_idx+1 rol sta _11+1 - //SEG70 [36] (signed word*~) render_sine::$3 ← (const signed word*) sin2#0 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 + //SEG68 [35] (signed word*~) render_sine::$3 ← (const signed word[$200]) sin2#0 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 clc lda _3 adc #sin2 sta _3+1 - //SEG71 [37] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) -- vwsz1=_deref_pwsz1 + //SEG69 [36] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin2_val),y tax @@ -6386,7 +6369,7 @@ render_sine: { lda (sin2_val),y stx sin2_val sta sin2_val+1 - //SEG72 [38] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 + //SEG70 [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 lda #$a sta $fe ora #$7f @@ -6401,65 +6384,65 @@ render_sine: { lda wrap_y.y+1 adc $ff sta wrap_y.y+1 - //SEG73 [39] call wrap_y - //SEG74 [59] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] + //SEG71 [38] call wrap_y + //SEG72 [58] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] wrap_y_from_b4: - //SEG75 [59] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@4->wrap_y#0] -- register_copy + //SEG73 [58] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@4->wrap_y#0] -- register_copy jsr wrap_y - //SEG76 [40] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + //SEG74 [39] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 jmp b5 - //SEG77 render_sine::@5 + //SEG75 render_sine::@5 b5: - //SEG78 [41] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa + //SEG76 [40] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa tax - //SEG79 [42] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - //SEG80 [43] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - //SEG81 [44] call bitmap_plot - //SEG82 [52] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] + //SEG77 [41] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + //SEG78 [42] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + //SEG79 [43] call bitmap_plot + //SEG80 [51] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] bitmap_plot_from_b5: - //SEG83 [52] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@5->bitmap_plot#0] -- register_copy - //SEG84 [52] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@5->bitmap_plot#1] -- register_copy + //SEG81 [51] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@5->bitmap_plot#0] -- register_copy + //SEG82 [51] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@5->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b6 - //SEG85 render_sine::@6 + //SEG83 render_sine::@6 b6: - //SEG86 [45] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + //SEG84 [44] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc xpos bne !+ inc xpos+1 !: - //SEG87 [46] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 -- vwuz1_neq_vwuc1_then_la1 + //SEG85 [45] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 -- vwuz1_neq_vwuc1_then_la1 lda xpos+1 cmp #>$140 bne b7_from_b6 lda xpos cmp #<$140 bne b7_from_b6 - //SEG88 [48] phi from render_sine::@6 to render_sine::@2 [phi:render_sine::@6->render_sine::@2] + //SEG86 [47] phi from render_sine::@6 to render_sine::@2 [phi:render_sine::@6->render_sine::@2] b2_from_b6: - //SEG89 [48] phi (word) render_sine::xpos#8 = (byte) 0 [phi:render_sine::@6->render_sine::@2#0] -- vwuz1=vbuc1 + //SEG87 [47] phi (word) render_sine::xpos#8 = (byte) 0 [phi:render_sine::@6->render_sine::@2#0] -- vwuz1=vbuc1 lda #0 sta xpos lda #0 sta xpos+1 jmp b2 - //SEG90 [47] phi from render_sine::@6 to render_sine::@7 [phi:render_sine::@6->render_sine::@7] + //SEG88 [46] phi from render_sine::@6 to render_sine::@7 [phi:render_sine::@6->render_sine::@7] b7_from_b6: jmp b7 - //SEG91 render_sine::@7 + //SEG89 render_sine::@7 b7: - //SEG92 [48] phi from render_sine::@7 to render_sine::@2 [phi:render_sine::@7->render_sine::@2] + //SEG90 [47] phi from render_sine::@7 to render_sine::@2 [phi:render_sine::@7->render_sine::@2] b2_from_b7: - //SEG93 [48] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@7->render_sine::@2#0] -- register_copy + //SEG91 [47] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@7->render_sine::@2#0] -- register_copy jmp b2 - //SEG94 render_sine::@2 + //SEG92 render_sine::@2 b2: - //SEG95 [49] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + //SEG93 [48] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc sin_idx bne !+ inc sin_idx+1 !: - //SEG96 [50] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG94 [49] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 lda sin_idx+1 cmp #>SIN_SIZE bcc b1_from_b2 @@ -6469,31 +6452,31 @@ render_sine: { bcc b1_from_b2 !: jmp breturn - //SEG97 render_sine::@return + //SEG95 render_sine::@return breturn: - //SEG98 [51] return + //SEG96 [50] return rts } -//SEG99 bitmap_plot +//SEG97 bitmap_plot // Plot a single dot in the bitmap // bitmap_plot(word zeropage(4) x, byte register(X) y) bitmap_plot: { .label _1 = $33 .label plotter = $31 .label x = 4 - //SEG100 [53] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + //SEG98 [52] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta plotter+1 lda bitmap_plot_ylo,x sta plotter - //SEG101 [54] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + //SEG99 [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG102 [55] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG100 [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -6501,9 +6484,9 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG103 [56] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 + //SEG101 [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 lda x - //SEG104 [57] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + //SEG102 [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa tay lda bitmap_plot_bit,y ldy #0 @@ -6511,23 +6494,23 @@ bitmap_plot: { ldy #0 sta (plotter),y jmp breturn - //SEG105 bitmap_plot::@return + //SEG103 bitmap_plot::@return breturn: - //SEG106 [58] return + //SEG104 [57] return rts } -//SEG107 wrap_y +//SEG105 wrap_y // wrap_y(signed word zeropage(6) y) wrap_y: { .label y = 6 - //SEG108 [60] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + //SEG106 [59] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] b1_from_wrap_y: b1_from_b2: - //SEG109 [60] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + //SEG107 [59] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy jmp b1 - //SEG110 wrap_y::@1 + //SEG108 wrap_y::@1 b1: - //SEG111 [61] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 + //SEG109 [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 lda y cmp #<$c8 lda y+1 @@ -6536,29 +6519,29 @@ wrap_y: { eor #$80 !: bpl b2 - //SEG112 [62] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] + //SEG110 [61] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] b3_from_b1: b3_from_b4: - //SEG113 [62] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy + //SEG111 [61] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy jmp b3 - //SEG114 wrap_y::@3 + //SEG112 wrap_y::@3 b3: - //SEG115 [63] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 + //SEG113 [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 lda y+1 bmi b4 jmp b5 - //SEG116 wrap_y::@5 + //SEG114 wrap_y::@5 b5: - //SEG117 [64] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 + //SEG115 [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 lda y jmp breturn - //SEG118 wrap_y::@return + //SEG116 wrap_y::@return breturn: - //SEG119 [65] return + //SEG117 [64] return rts - //SEG120 wrap_y::@4 + //SEG118 wrap_y::@4 b4: - //SEG121 [66] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 + //SEG119 [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 clc lda y adc #<$c8 @@ -6567,9 +6550,9 @@ wrap_y: { adc #>$c8 sta y+1 jmp b3_from_b4 - //SEG122 wrap_y::@2 + //SEG120 wrap_y::@2 b2: - //SEG123 [67] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 + //SEG121 [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 lda y sec sbc #<$c8 @@ -6579,7 +6562,7 @@ wrap_y: { sta y+1 jmp b1_from_b2 } -//SEG124 sin16s_gen2 +//SEG122 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -6594,28 +6577,28 @@ sin16s_gen2: { .label sintab = $c .label x = 8 .label i = $e - //SEG125 [69] call div32u16u - //SEG126 [157] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG123 [68] call div32u16u + //SEG124 [156] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u - //SEG127 [70] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG125 [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b2 - //SEG128 sin16s_gen2::@2 + //SEG126 sin16s_gen2::@2 b2: - //SEG129 [71] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG130 [72] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] + //SEG127 [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG128 [71] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] b1_from_b2: - //SEG131 [72] phi (word) sin16s_gen2::i#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG129 [71] phi (word) sin16s_gen2::i#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG132 [72] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[$200]) sin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG130 [71] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[$200]) sin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #sin sta sintab+1 - //SEG133 [72] phi (dword) sin16s_gen2::x#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG131 [71] phi (dword) sin16s_gen2::x#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6624,15 +6607,15 @@ sin16s_gen2: { sta x+3 jmp b1 // u[4.28] - //SEG134 [72] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] + //SEG132 [71] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] b1_from_b4: - //SEG135 [72] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy - //SEG136 [72] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy - //SEG137 [72] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy + //SEG133 [71] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy + //SEG134 [71] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy + //SEG135 [71] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG138 sin16s_gen2::@1 + //SEG136 sin16s_gen2::@1 b1: - //SEG139 [73] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG137 [72] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6641,33 +6624,33 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG140 [74] call sin16s + //SEG138 [73] call sin16s jsr sin16s - //SEG141 [75] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG139 [74] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b3 - //SEG142 sin16s_gen2::@3 + //SEG140 sin16s_gen2::@3 b3: - //SEG143 [76] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG144 [77] call mul16s + //SEG141 [75] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG142 [76] call mul16s jsr mul16s - //SEG145 [78] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG143 [77] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 jmp b4 - //SEG146 sin16s_gen2::@4 + //SEG144 sin16s_gen2::@4 b4: - //SEG147 [79] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG148 [80] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG145 [78] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG146 [79] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _8 lda _5+3 sta _8+1 - //SEG149 [81] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG147 [80] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG150 [82] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG148 [81] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -6675,7 +6658,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG151 [83] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG149 [82] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6689,12 +6672,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG152 [84] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG150 [83] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG153 [85] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG151 [84] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>SIN_SIZE bcc b1_from_b4 @@ -6704,12 +6687,12 @@ sin16s_gen2: { bcc b1_from_b4 !: jmp breturn - //SEG154 sin16s_gen2::@return + //SEG152 sin16s_gen2::@return breturn: - //SEG155 [86] return + //SEG153 [85] return rts } -//SEG156 mul16s +//SEG154 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($21) a) @@ -6719,16 +6702,16 @@ mul16s: { .label m = $10 .label return = $10 .label a = $21 - //SEG157 [87] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG155 [86] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG158 [88] call mul16u - //SEG159 [98] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG156 [87] call mul16u + //SEG157 [97] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG160 [98] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - //SEG161 [98] phi (dword) mul16u::mb#0 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vduz1=vduc1 + //SEG158 [97] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + //SEG159 [97] phi (dword) mul16u::mb#0 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vduz1=vduc1 lda #sin16s_gen2.ampl @@ -6738,23 +6721,23 @@ mul16s: { lda #>sin16s_gen2.ampl>>$10 sta mul16u.mb+3 jsr mul16u - //SEG162 [89] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG160 [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b4 - //SEG163 mul16s::@4 + //SEG161 mul16s::@4 b4: - //SEG164 [90] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG165 [91] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG162 [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG163 [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b4 jmp b3 - //SEG166 mul16s::@3 + //SEG164 mul16s::@3 b3: - //SEG167 [92] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG165 [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG168 [93] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG166 [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG169 [94] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG167 [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG170 [95] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + //SEG168 [94] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] b1_from_b3: b1_from_b4: - //SEG171 [95] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + //SEG169 [94] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy jmp b1 - //SEG172 mul16s::@1 + //SEG170 mul16s::@1 b1: jmp b2 - //SEG173 mul16s::@2 + //SEG171 mul16s::@2 b2: - //SEG174 [96] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + //SEG172 [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 jmp breturn - //SEG175 mul16s::@return + //SEG173 mul16s::@return breturn: - //SEG176 [97] return + //SEG174 [96] return rts } -//SEG177 mul16u +//SEG175 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($16) a, word zeropage($14) b) mul16u: { @@ -6793,42 +6776,42 @@ mul16u: { .label res = $10 .label return = $10 .label b = $14 - //SEG178 [99] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG176 [98] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG179 [99] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG180 [99] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG177 [98] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG178 [98] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG181 [99] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG179 [98] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG182 mul16u::@1 + //SEG180 mul16u::@1 b1: - //SEG183 [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG181 [99] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG184 mul16u::@return + //SEG182 mul16u::@return breturn: - //SEG185 [101] return + //SEG183 [100] return rts - //SEG186 mul16u::@2 + //SEG184 mul16u::@2 b2: - //SEG187 [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG185 [101] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG188 [103] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG186 [102] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG189 mul16u::@4 + //SEG187 mul16u::@4 b4: - //SEG190 [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG188 [103] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6842,29 +6825,29 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG191 [105] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG189 [104] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG192 [105] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG190 [104] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG193 mul16u::@3 + //SEG191 mul16u::@3 b3: - //SEG194 [106] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG192 [105] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG195 [107] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG193 [106] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG196 [99] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG194 [98] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG197 [99] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG198 [99] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG199 [99] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG195 [98] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG196 [98] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG197 [98] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG200 sin16s +//SEG198 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -6883,7 +6866,7 @@ sin16s: { .label x5_128 = $3f .label sinx = $21 .label isUpper = $1c - //SEG201 [108] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG199 [107] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -6901,9 +6884,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG202 sin16s::@4 + //SEG200 sin16s::@4 b4: - //SEG203 [109] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG201 [108] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG204 [110] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG202 [109] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG205 [110] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG203 [109] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG206 [110] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG204 [109] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG207 [110] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG205 [109] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG208 [110] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG206 [109] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG209 [110] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG207 [109] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG210 sin16s::@1 + //SEG208 sin16s::@1 b1: - //SEG211 [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG209 [110] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -6951,9 +6934,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG212 sin16s::@5 + //SEG210 sin16s::@5 b5: - //SEG213 [112] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG211 [111] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG214 [113] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG212 [112] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG215 [113] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG213 [112] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG216 sin16s::@2 + //SEG214 sin16s::@2 b2: - //SEG217 [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 + //SEG215 [113] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -6983,80 +6966,80 @@ sin16s: { rol _4+3 dey bne !- - //SEG218 [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG216 [114] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG219 [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG217 [115] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG220 [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG218 [116] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG221 [118] call mulu16_sel - //SEG222 [148] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG219 [117] call mulu16_sel + //SEG220 [147] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG223 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG221 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG224 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG225 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG222 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG223 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG226 [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG224 [118] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b7 - //SEG227 sin16s::@7 + //SEG225 sin16s::@7 b7: - //SEG228 [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG226 [119] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG229 [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG230 [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG227 [120] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG228 [121] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG231 [123] call mulu16_sel - //SEG232 [148] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG229 [122] call mulu16_sel + //SEG230 [147] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG233 [148] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG231 [147] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG234 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG235 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG232 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG233 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG236 [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG234 [123] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 jmp b8 - //SEG237 sin16s::@8 + //SEG235 sin16s::@8 b8: - //SEG238 [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG239 [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG240 [127] call mulu16_sel - //SEG241 [148] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG236 [124] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG237 [125] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG238 [126] call mulu16_sel + //SEG239 [147] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG242 [148] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG240 [147] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG243 [148] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG241 [147] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG244 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG242 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG245 [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG243 [127] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b9 - //SEG246 sin16s::@9 + //SEG244 sin16s::@9 b9: - //SEG247 [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG248 [130] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG245 [128] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG246 [129] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -7064,49 +7047,49 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG249 [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG250 [132] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG247 [130] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG248 [131] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG251 [133] call mulu16_sel - //SEG252 [148] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG249 [132] call mulu16_sel + //SEG250 [147] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG253 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG251 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG254 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG255 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG252 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG253 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG256 [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG254 [133] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 jmp b10 - //SEG257 sin16s::@10 + //SEG255 sin16s::@10 b10: - //SEG258 [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG259 [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG260 [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG256 [134] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG257 [135] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG258 [136] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG261 [138] call mulu16_sel - //SEG262 [148] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG259 [137] call mulu16_sel + //SEG260 [147] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG263 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG261 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG264 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG265 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG262 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG263 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG266 [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG264 [138] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b11 - //SEG267 sin16s::@11 + //SEG265 sin16s::@11 b11: - //SEG268 [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG269 [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG266 [139] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG267 [140] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -7115,7 +7098,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG270 [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG268 [141] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -7123,14 +7106,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG271 [143] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG269 [142] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG272 sin16s::@6 + //SEG270 sin16s::@6 b6: - //SEG273 [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG271 [143] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -7138,24 +7121,24 @@ sin16s: { lda #0 sbc sinx+1 sta sinx+1 - //SEG274 [145] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG272 [144] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG275 [145] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG273 [144] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG276 sin16s::@3 + //SEG274 sin16s::@3 b3: jmp breturn - //SEG277 sin16s::@return + //SEG275 sin16s::@return breturn: - //SEG278 [146] return + //SEG276 [145] return rts - //SEG279 sin16s::@12 + //SEG277 sin16s::@12 b12: - //SEG280 [147] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG278 [146] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b12 } -//SEG281 mulu16_sel +//SEG279 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($23) v1, word zeropage($14) v2, byte register(X) select) @@ -7167,17 +7150,17 @@ mulu16_sel: { .label return = $3f .label return_1 = $23 .label return_10 = $23 - //SEG282 [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG280 [148] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG283 [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG284 [151] call mul16u - //SEG285 [98] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG281 [149] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG282 [150] call mul16u + //SEG283 [97] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG286 [98] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG287 [98] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- vduz1=vwuz2 + //SEG284 [97] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG285 [97] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -7186,12 +7169,12 @@ mulu16_sel: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG288 [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG286 [151] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b1 - //SEG289 mulu16_sel::@1 + //SEG287 mulu16_sel::@1 b1: - //SEG290 [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG291 [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG288 [152] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG289 [153] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -7202,64 +7185,64 @@ mulu16_sel: { dex bne !- !e: - //SEG292 [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG290 [154] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 jmp breturn - //SEG293 mulu16_sel::@return + //SEG291 mulu16_sel::@return breturn: - //SEG294 [156] return + //SEG292 [155] return rts } -//SEG295 div32u16u +//SEG293 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $41 .label quotient_lo = $29 .label return = $35 - //SEG296 [158] call divr16u - //SEG297 [167] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG294 [157] call divr16u + //SEG295 [166] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG298 [167] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG296 [166] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG299 [167] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG297 [166] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG300 [159] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG298 [158] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b1 - //SEG301 div32u16u::@1 + //SEG299 div32u16u::@1 b1: - //SEG302 [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG300 [159] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG303 [161] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG304 [162] call divr16u - //SEG305 [167] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG301 [160] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG302 [161] call divr16u + //SEG303 [166] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG306 [167] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG304 [166] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG307 [167] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG305 [166] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG308 [163] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG306 [162] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b2 - //SEG309 div32u16u::@2 + //SEG307 div32u16u::@2 b2: - //SEG310 [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG311 [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG308 [163] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG309 [164] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -7269,12 +7252,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG312 div32u16u::@return + //SEG310 div32u16u::@return breturn: - //SEG313 [166] return + //SEG311 [165] return rts } -//SEG314 divr16u +//SEG312 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -7285,58 +7268,58 @@ divr16u: { .label dividend = $27 .label quotient = $29 .label return = $29 - //SEG315 [168] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG313 [167] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG316 [168] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG314 [167] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG317 [168] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG315 [167] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG318 [168] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG319 [168] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG316 [167] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG317 [167] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG320 [168] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG318 [167] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG321 [168] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG322 [168] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG323 [168] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG324 [168] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG319 [167] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG320 [167] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG321 [167] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG322 [167] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG325 divr16u::@1 + //SEG323 divr16u::@1 b1: - //SEG326 [169] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG324 [168] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG327 [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG325 [169] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG328 [171] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG326 [170] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG329 [172] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG327 [171] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG330 divr16u::@4 + //SEG328 divr16u::@4 b4: - //SEG331 [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG329 [172] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG332 [174] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG330 [173] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG333 [174] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG331 [173] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG334 divr16u::@2 + //SEG332 divr16u::@2 b2: - //SEG335 [175] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG333 [174] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG336 [176] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG334 [175] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG337 [177] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG335 [176] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3_from_b2 @@ -7346,14 +7329,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG338 divr16u::@5 + //SEG336 divr16u::@5 b5: - //SEG339 [178] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG337 [177] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG340 [179] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG338 [178] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #SIN_SIZE sta rem+1 - //SEG341 [180] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG339 [179] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG342 [180] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG343 [180] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG340 [179] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG341 [179] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG344 divr16u::@3 + //SEG342 divr16u::@3 b3: - //SEG345 [181] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG343 [180] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG346 [182] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG344 [181] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG347 divr16u::@6 + //SEG345 divr16u::@6 b6: - //SEG348 [183] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG346 [182] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG349 divr16u::@return + //SEG347 divr16u::@return breturn: - //SEG350 [184] return + //SEG348 [183] return rts } -//SEG351 bitmap_clear +//SEG349 bitmap_clear // Clear all graphics on the bitmap // bgcol - the background color to fill the screen with // fgcol - the foreground color to fill the screen with bitmap_clear: { .const col = WHITE*$10 - //SEG352 [186] call memset - //SEG353 [190] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + //SEG350 [185] call memset + //SEG351 [189] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: - //SEG354 [190] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + //SEG352 [189] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - //SEG355 [190] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#1] -- vwuz1=vwuc1 + //SEG353 [189] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#1] -- vwuz1=vwuc1 lda #<$3e8 sta memset.num lda #>$3e8 sta memset.num+1 - //SEG356 [190] phi (void*) memset::str#2 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#2] -- pvoz1=pvoc1 + //SEG354 [189] phi (void*) memset::str#2 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#2] -- pvoz1=pvoc1 lda #SCREEN sta memset.str+1 jsr memset - //SEG357 [187] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG355 [186] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: jmp b1 - //SEG358 bitmap_clear::@1 + //SEG356 bitmap_clear::@1 b1: - //SEG359 [188] call memset - //SEG360 [190] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + //SEG357 [187] call memset + //SEG358 [189] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from_b1: - //SEG361 [190] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + //SEG359 [189] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - //SEG362 [190] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#1] -- vwuz1=vwuc1 + //SEG360 [189] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#1] -- vwuz1=vwuc1 lda #<$1f40 sta memset.num lda #>$1f40 sta memset.num+1 - //SEG363 [190] phi (void*) memset::str#2 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#2] -- pvoz1=pvoc1 + //SEG361 [189] phi (void*) memset::str#2 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#2] -- pvoz1=pvoc1 lda #BITMAP sta memset.str+1 jsr memset jmp breturn - //SEG364 bitmap_clear::@return + //SEG362 bitmap_clear::@return breturn: - //SEG365 [189] return + //SEG363 [188] return rts } -//SEG366 memset +//SEG364 memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // memset(void* zeropage($2b) str, byte register(X) c, word zeropage($2d) num) memset: { @@ -7441,7 +7424,7 @@ memset: { .label dst = $2b .label str = $2b .label num = $2d - //SEG367 [191] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + //SEG365 [190] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda end clc adc str @@ -7449,24 +7432,24 @@ memset: { lda end+1 adc str+1 sta end+1 - //SEG368 [192] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 - //SEG369 [193] phi from memset memset::@1 to memset::@1 [phi:memset/memset::@1->memset::@1] + //SEG366 [191] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 + //SEG367 [192] phi from memset memset::@1 to memset::@1 [phi:memset/memset::@1->memset::@1] b1_from_memset: b1_from_b1: - //SEG370 [193] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset/memset::@1->memset::@1#0] -- register_copy + //SEG368 [192] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset/memset::@1->memset::@1#0] -- register_copy jmp b1 - //SEG371 memset::@1 + //SEG369 memset::@1 b1: - //SEG372 [194] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + //SEG370 [193] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y - //SEG373 [195] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + //SEG371 [194] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG374 [196] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG372 [195] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 -- pbuz1_neq_pbuz2_then_la1 lda dst+1 cmp end+1 bne b1_from_b1 @@ -7474,96 +7457,96 @@ memset: { cmp end bne b1_from_b1 jmp breturn - //SEG375 memset::@return + //SEG373 memset::@return breturn: - //SEG376 [197] return + //SEG374 [196] return rts } -//SEG377 bitmap_init +//SEG375 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _7 = $43 .label yoffs = $2f - //SEG378 [199] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG376 [198] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG379 [199] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG377 [198] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG380 [199] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG378 [198] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 jmp b1 - //SEG381 [199] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG379 [198] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG382 [199] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG383 [199] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG380 [198] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG381 [198] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG384 bitmap_init::@1 + //SEG382 bitmap_init::@1 b1: - //SEG385 [200] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG383 [199] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG386 [201] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + //SEG384 [200] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG387 [202] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + //SEG385 [201] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne b6_from_b1 - //SEG388 [204] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG386 [203] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG389 [204] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG387 [203] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 jmp b2 - //SEG390 [203] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + //SEG388 [202] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] b6_from_b1: jmp b6 - //SEG391 bitmap_init::@6 + //SEG389 bitmap_init::@6 b6: - //SEG392 [204] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + //SEG390 [203] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] b2_from_b6: - //SEG393 [204] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + //SEG391 [203] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp b2 - //SEG394 bitmap_init::@2 + //SEG392 bitmap_init::@2 b2: - //SEG395 [205] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG393 [204] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG396 [206] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG394 [205] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG397 [207] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG395 [206] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG398 [207] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG396 [206] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG399 [207] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG397 [206] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG400 [207] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG398 [206] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG401 [207] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG402 [207] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG399 [206] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG400 [206] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG403 bitmap_init::@3 + //SEG401 bitmap_init::@3 b3: - //SEG404 [208] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG402 [207] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax _7 - //SEG405 [209] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG403 [208] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG406 [210] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG404 [209] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _7 - //SEG407 [211] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG405 [210] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG408 [212] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG406 [211] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG409 [213] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG407 [212] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG410 [214] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG408 [213] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp _7 bne b4_from_b3 jmp b5 - //SEG411 bitmap_init::@5 + //SEG409 bitmap_init::@5 b5: - //SEG412 [215] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG410 [214] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -7571,40 +7554,39 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG413 [216] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + //SEG411 [215] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] b4_from_b3: b4_from_b5: - //SEG414 [216] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + //SEG412 [215] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG415 bitmap_init::@4 + //SEG413 bitmap_init::@4 b4: - //SEG416 [217] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG414 [216] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG417 [218] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG415 [217] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG418 bitmap_init::@return + //SEG416 bitmap_init::@return breturn: - //SEG419 [219] return + //SEG417 [218] return rts } -//SEG420 File Data +//SEG418 File Data // Tables for the plotter - initialized by calling bitmap_init(); bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 sin: .fill 2*$200, 0 -.pc = sin2 "sin2" - .for(var i=0; i<512; i++) { +sin2: +.for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } ASSEMBLER OPTIMIZATIONS Removing instruction jmp b1 -Removing instruction jmp b2 Removing instruction jmp bend Removing instruction jmp vicSelectGfxBank1 Removing instruction jmp vicSelectGfxBank1_toDd001 @@ -7716,10 +7698,9 @@ Replacing label b6_from_b1 with b2 Replacing label b1_from_b2 with b1 Replacing label b4_from_b3 with b4 Replacing label b3_from_b4 with b3 +Removing instruction b1_from_bbegin: Removing instruction b1: -Removing instruction b2_from_b1: -Removing instruction b2: -Removing instruction bend_from_b2: +Removing instruction bend_from_b1: Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_toDd001: Removing instruction toD0181_from_b2: @@ -7861,12 +7842,11 @@ Removing instruction b12: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [160] bcc b1 to bcs -Fixing long branch [166] bcc b1 to bcs +Fixing long branch [159] bcc b1 to bcs +Fixing long branch [165] bcc b1 to bcs FINAL SYMBOL TABLE (label) @1 -(label) @2 (label) @begin (label) @end (byte*) BGCOL @@ -8245,8 +8225,11 @@ FINAL SYMBOL TABLE (dword) sin16s_gen2::x (dword) sin16s_gen2::x#1 x zp ZP_DWORD:8 7.333333333333333 (dword) sin16s_gen2::x#2 x zp ZP_DWORD:8 3.0 -(signed word*) sin2 -(const signed word*) sin2#0 sin2 = (signed word*) 5120 +(signed word[$200]) sin2 +(const signed word[$200]) sin2#0 sin2 = kickasm {{ .for(var i=0; i<512; i++) { + .word sin(toRadians([i*360]/512))*320 + } + }} (byte()) wrap_y((signed word) wrap_y::y) (label) wrap_y::@1 (label) wrap_y::@2 @@ -8318,7 +8301,7 @@ reg byte a [ bitmap_init::$6 ] FINAL ASSEMBLER -Score: 27353 +Score: 24793 //SEG0 File Comments // Generate a big sinus and plot it on a bitmap @@ -8358,78 +8341,75 @@ Score: 27353 .label SCREEN = $400 .label BITMAP = $2000 .const SIN_SIZE = $200 - .label sin2 = $1400 .label rem16u = $25 //SEG3 @begin -//SEG4 @1 -//SEG5 kickasm(location (const signed word*) sin2#0) {{ .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } }} -//SEG6 [2] phi from @1 to @2 [phi:@1->@2] -//SEG7 @2 -//SEG8 [3] call main -//SEG9 [4] phi from @2 to @end [phi:@2->@end] -//SEG10 @end -//SEG11 main +//SEG4 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG5 @1 +//SEG6 [2] call main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main main: { .const vicSelectGfxBank1_toDd001_return = 3 .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f - //SEG12 asm { sei } + //SEG10 asm { sei } sei - //SEG13 [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 + //SEG11 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2 // Disable normal interrupt // Disable kernal & basic lda #PROCPORT_DDR_MEMORY_MASK sta PROCPORT_DDR - //SEG14 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG12 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG15 [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + //SEG13 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 - //SEG16 main::vicSelectGfxBank1 - //SEG17 [9] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + //SEG14 main::vicSelectGfxBank1 + //SEG15 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 lda #3 sta CIA2_PORT_A_DDR - //SEG18 [10] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] - //SEG19 main::vicSelectGfxBank1_toDd001 - //SEG20 main::vicSelectGfxBank1_@1 - //SEG21 [11] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + //SEG16 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + //SEG17 main::vicSelectGfxBank1_toDd001 + //SEG18 main::vicSelectGfxBank1_@1 + //SEG19 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 lda #vicSelectGfxBank1_toDd001_return sta CIA2_PORT_A - //SEG22 main::@2 - //SEG23 [12] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 + //SEG20 main::@2 + //SEG21 [11] *((const byte*) D016#0) ← (const byte) VIC_CSEL#0 -- _deref_pbuc1=vbuc2 lda #VIC_CSEL sta D016 - //SEG24 [13] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] - //SEG25 main::toD0181 - //SEG26 main::@3 - //SEG27 [14] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + //SEG22 [12] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] + //SEG23 main::toD0181 + //SEG24 main::@3 + //SEG25 [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 - //SEG28 [15] call bitmap_init - //SEG29 [198] phi from main::@3 to bitmap_init [phi:main::@3->bitmap_init] + //SEG26 [14] call bitmap_init + //SEG27 [197] phi from main::@3 to bitmap_init [phi:main::@3->bitmap_init] jsr bitmap_init - //SEG30 [16] phi from main::@3 to main::@4 [phi:main::@3->main::@4] - //SEG31 main::@4 - //SEG32 [17] call bitmap_clear - //SEG33 [185] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] + //SEG28 [15] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG29 main::@4 + //SEG30 [16] call bitmap_clear + //SEG31 [184] phi from main::@4 to bitmap_clear [phi:main::@4->bitmap_clear] jsr bitmap_clear - //SEG34 [18] phi from main::@4 to main::@5 [phi:main::@4->main::@5] - //SEG35 main::@5 - //SEG36 [19] call sin16s_gen2 - //SEG37 [68] phi from main::@5 to sin16s_gen2 [phi:main::@5->sin16s_gen2] + //SEG32 [17] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + //SEG33 main::@5 + //SEG34 [18] call sin16s_gen2 + //SEG35 [67] phi from main::@5 to sin16s_gen2 [phi:main::@5->sin16s_gen2] jsr sin16s_gen2 - //SEG38 [20] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG39 main::@6 - //SEG40 [21] call render_sine - //SEG41 [23] phi from main::@6 to render_sine [phi:main::@6->render_sine] + //SEG36 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG37 main::@6 + //SEG38 [20] call render_sine + //SEG39 [22] phi from main::@6 to render_sine [phi:main::@6->render_sine] jsr render_sine - //SEG42 main::@1 + //SEG40 main::@1 b1: - //SEG43 [22] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG41 [21] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BGCOL jmp b1 } -//SEG44 render_sine +//SEG42 render_sine render_sine: { .label _0 = 6 .label _3 = 6 @@ -8439,27 +8419,27 @@ render_sine: { .label sin2_val = 6 .label xpos = 4 .label sin_idx = 2 - //SEG45 [24] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] - //SEG46 [24] phi (word) render_sine::xpos#3 = (byte) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 + //SEG43 [23] phi from render_sine to render_sine::@1 [phi:render_sine->render_sine::@1] + //SEG44 [23] phi (word) render_sine::xpos#3 = (byte) 0 [phi:render_sine->render_sine::@1#0] -- vwuz1=vbuc1 lda #0 sta xpos sta xpos+1 - //SEG47 [24] phi (word) render_sine::sin_idx#2 = (byte) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 + //SEG45 [23] phi (word) render_sine::sin_idx#2 = (byte) 0 [phi:render_sine->render_sine::@1#1] -- vwuz1=vbuc1 sta sin_idx sta sin_idx+1 - //SEG48 [24] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] - //SEG49 [24] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy - //SEG50 [24] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy - //SEG51 render_sine::@1 + //SEG46 [23] phi from render_sine::@2 to render_sine::@1 [phi:render_sine::@2->render_sine::@1] + //SEG47 [23] phi (word) render_sine::xpos#3 = (word) render_sine::xpos#8 [phi:render_sine::@2->render_sine::@1#0] -- register_copy + //SEG48 [23] phi (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#1 [phi:render_sine::@2->render_sine::@1#1] -- register_copy + //SEG49 render_sine::@1 b1: - //SEG52 [25] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + //SEG50 [24] (word~) render_sine::$10 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _10 lda sin_idx+1 rol sta _10+1 - //SEG53 [26] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz1 + //SEG51 [25] (signed word*~) render_sine::$0 ← (const signed word[$200]) sin#0 + (word~) render_sine::$10 -- pwsz1=pwsc1_plus_vwuz1 clc lda _0 adc #sin sta _0+1 - //SEG54 [27] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) -- vwsz1=_deref_pwsz1 + //SEG52 [26] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$0) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin_val),y tax @@ -8475,31 +8455,31 @@ render_sine: { lda (sin_val),y stx sin_val sta sin_val+1 - //SEG55 [28] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 - //SEG56 [29] call wrap_y - //SEG57 [59] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] - //SEG58 [59] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy + //SEG53 [27] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0 + //SEG54 [28] call wrap_y + //SEG55 [58] phi from render_sine::@1 to wrap_y [phi:render_sine::@1->wrap_y] + //SEG56 [58] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#0 [phi:render_sine::@1->wrap_y#0] -- register_copy jsr wrap_y - //SEG59 [30] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 - //SEG60 render_sine::@3 - //SEG61 [31] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa + //SEG57 [29] (byte) wrap_y::return#0 ← (byte) wrap_y::return#2 + //SEG58 render_sine::@3 + //SEG59 [30] (byte) render_sine::ypos#0 ← (byte) wrap_y::return#0 -- vbuxx=vbuaa tax - //SEG62 [32] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 - //SEG63 [33] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 - //SEG64 [34] call bitmap_plot - //SEG65 [52] phi from render_sine::@3 to bitmap_plot [phi:render_sine::@3->bitmap_plot] - //SEG66 [52] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@3->bitmap_plot#0] -- register_copy - //SEG67 [52] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@3->bitmap_plot#1] -- register_copy + //SEG60 [31] (word) bitmap_plot::x#0 ← (word) render_sine::xpos#3 + //SEG61 [32] (byte) bitmap_plot::y#0 ← (byte) render_sine::ypos#0 + //SEG62 [33] call bitmap_plot + //SEG63 [51] phi from render_sine::@3 to bitmap_plot [phi:render_sine::@3->bitmap_plot] + //SEG64 [51] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#0 [phi:render_sine::@3->bitmap_plot#0] -- register_copy + //SEG65 [51] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#0 [phi:render_sine::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG68 render_sine::@4 - //SEG69 [35] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 + //SEG66 render_sine::@4 + //SEG67 [34] (word~) render_sine::$11 ← (word) render_sine::sin_idx#2 << (byte) 1 -- vwuz1=vwuz2_rol_1 lda sin_idx asl sta _11 lda sin_idx+1 rol sta _11+1 - //SEG70 [36] (signed word*~) render_sine::$3 ← (const signed word*) sin2#0 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 + //SEG68 [35] (signed word*~) render_sine::$3 ← (const signed word[$200]) sin2#0 + (word~) render_sine::$11 -- pwsz1=pwsc1_plus_vwuz1 clc lda _3 adc #sin2 sta _3+1 - //SEG71 [37] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) -- vwsz1=_deref_pwsz1 + //SEG69 [36] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$3) -- vwsz1=_deref_pwsz1 ldy #0 lda (sin2_val),y tax @@ -8515,7 +8495,7 @@ render_sine: { lda (sin2_val),y stx sin2_val sta sin2_val+1 - //SEG72 [38] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 + //SEG70 [37] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 lda #$a sta $fe ora #$7f @@ -8530,51 +8510,51 @@ render_sine: { lda wrap_y.y+1 adc $ff sta wrap_y.y+1 - //SEG73 [39] call wrap_y - //SEG74 [59] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] - //SEG75 [59] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@4->wrap_y#0] -- register_copy + //SEG71 [38] call wrap_y + //SEG72 [58] phi from render_sine::@4 to wrap_y [phi:render_sine::@4->wrap_y] + //SEG73 [58] phi (signed word) wrap_y::y#9 = (signed word) wrap_y::y#1 [phi:render_sine::@4->wrap_y#0] -- register_copy jsr wrap_y - //SEG76 [40] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 - //SEG77 render_sine::@5 - //SEG78 [41] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa + //SEG74 [39] (byte) wrap_y::return#1 ← (byte) wrap_y::return#2 + //SEG75 render_sine::@5 + //SEG76 [40] (byte) render_sine::ypos2#0 ← (byte) wrap_y::return#1 -- vbuxx=vbuaa tax - //SEG79 [42] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 - //SEG80 [43] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 - //SEG81 [44] call bitmap_plot - //SEG82 [52] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] - //SEG83 [52] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@5->bitmap_plot#0] -- register_copy - //SEG84 [52] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@5->bitmap_plot#1] -- register_copy + //SEG77 [41] (word) bitmap_plot::x#1 ← (word) render_sine::xpos#3 + //SEG78 [42] (byte) bitmap_plot::y#1 ← (byte) render_sine::ypos2#0 + //SEG79 [43] call bitmap_plot + //SEG80 [51] phi from render_sine::@5 to bitmap_plot [phi:render_sine::@5->bitmap_plot] + //SEG81 [51] phi (word) bitmap_plot::x#2 = (word) bitmap_plot::x#1 [phi:render_sine::@5->bitmap_plot#0] -- register_copy + //SEG82 [51] phi (byte) bitmap_plot::y#2 = (byte) bitmap_plot::y#1 [phi:render_sine::@5->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG85 render_sine::@6 - //SEG86 [45] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 + //SEG83 render_sine::@6 + //SEG84 [44] (word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#3 -- vwuz1=_inc_vwuz1 inc xpos bne !+ inc xpos+1 !: - //SEG87 [46] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 -- vwuz1_neq_vwuc1_then_la1 + //SEG85 [45] if((word) render_sine::xpos#1!=(word) $140) goto render_sine::@7 -- vwuz1_neq_vwuc1_then_la1 lda xpos+1 cmp #>$140 bne b2 lda xpos cmp #<$140 bne b2 - //SEG88 [48] phi from render_sine::@6 to render_sine::@2 [phi:render_sine::@6->render_sine::@2] - //SEG89 [48] phi (word) render_sine::xpos#8 = (byte) 0 [phi:render_sine::@6->render_sine::@2#0] -- vwuz1=vbuc1 + //SEG86 [47] phi from render_sine::@6 to render_sine::@2 [phi:render_sine::@6->render_sine::@2] + //SEG87 [47] phi (word) render_sine::xpos#8 = (byte) 0 [phi:render_sine::@6->render_sine::@2#0] -- vwuz1=vbuc1 lda #0 sta xpos sta xpos+1 - //SEG90 [47] phi from render_sine::@6 to render_sine::@7 [phi:render_sine::@6->render_sine::@7] - //SEG91 render_sine::@7 - //SEG92 [48] phi from render_sine::@7 to render_sine::@2 [phi:render_sine::@7->render_sine::@2] - //SEG93 [48] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@7->render_sine::@2#0] -- register_copy - //SEG94 render_sine::@2 + //SEG88 [46] phi from render_sine::@6 to render_sine::@7 [phi:render_sine::@6->render_sine::@7] + //SEG89 render_sine::@7 + //SEG90 [47] phi from render_sine::@7 to render_sine::@2 [phi:render_sine::@7->render_sine::@2] + //SEG91 [47] phi (word) render_sine::xpos#8 = (word) render_sine::xpos#1 [phi:render_sine::@7->render_sine::@2#0] -- register_copy + //SEG92 render_sine::@2 b2: - //SEG95 [49] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 + //SEG93 [48] (word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#2 -- vwuz1=_inc_vwuz1 inc sin_idx bne !+ inc sin_idx+1 !: - //SEG96 [50] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG94 [49] if((word) render_sine::sin_idx#1<(const word) SIN_SIZE#0) goto render_sine::@1 -- vwuz1_lt_vwuc1_then_la1 lda sin_idx+1 cmp #>SIN_SIZE bcs !b1+ @@ -8587,30 +8567,30 @@ render_sine: { jmp b1 !b1: !: - //SEG97 render_sine::@return - //SEG98 [51] return + //SEG95 render_sine::@return + //SEG96 [50] return rts } -//SEG99 bitmap_plot +//SEG97 bitmap_plot // Plot a single dot in the bitmap // bitmap_plot(word zeropage(4) x, byte register(X) y) bitmap_plot: { .label _1 = $33 .label plotter = $31 .label x = 4 - //SEG100 [53] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + //SEG98 [52] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#2) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#2) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta plotter+1 lda bitmap_plot_ylo,x sta plotter - //SEG101 [54] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + //SEG99 [53] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#2 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG102 [55] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG100 [54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -8618,27 +8598,27 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG103 [56] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 + //SEG101 [55] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#2 -- vbuaa=_lo_vwuz1 lda x - //SEG104 [57] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + //SEG102 [56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa tay lda bitmap_plot_bit,y ldy #0 ora (plotter),y sta (plotter),y - //SEG105 bitmap_plot::@return - //SEG106 [58] return + //SEG103 bitmap_plot::@return + //SEG104 [57] return rts } -//SEG107 wrap_y +//SEG105 wrap_y // wrap_y(signed word zeropage(6) y) wrap_y: { .label y = 6 - //SEG108 [60] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] - //SEG109 [60] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy - //SEG110 wrap_y::@1 + //SEG106 [59] phi from wrap_y wrap_y::@2 to wrap_y::@1 [phi:wrap_y/wrap_y::@2->wrap_y::@1] + //SEG107 [59] phi (signed word) wrap_y::y#4 = (signed word) wrap_y::y#9 [phi:wrap_y/wrap_y::@2->wrap_y::@1#0] -- register_copy + //SEG108 wrap_y::@1 b1: - //SEG111 [61] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 + //SEG109 [60] if((signed word) wrap_y::y#4>=(signed word) $c8) goto wrap_y::@2 -- vwsz1_ge_vwsc1_then_la1 lda y cmp #<$c8 lda y+1 @@ -8647,22 +8627,22 @@ wrap_y: { eor #$80 !: bpl b2 - //SEG112 [62] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] - //SEG113 [62] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy - //SEG114 wrap_y::@3 + //SEG110 [61] phi from wrap_y::@1 wrap_y::@4 to wrap_y::@3 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3] + //SEG111 [61] phi (signed word) wrap_y::y#6 = (signed word) wrap_y::y#4 [phi:wrap_y::@1/wrap_y::@4->wrap_y::@3#0] -- register_copy + //SEG112 wrap_y::@3 b3: - //SEG115 [63] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 + //SEG113 [62] if((signed word) wrap_y::y#6<(signed byte) 0) goto wrap_y::@4 -- vwsz1_lt_0_then_la1 lda y+1 bmi b4 - //SEG116 wrap_y::@5 - //SEG117 [64] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 + //SEG114 wrap_y::@5 + //SEG115 [63] (byte) wrap_y::return#2 ← (byte)(signed word) wrap_y::y#6 -- vbuaa=_byte_vwsz1 lda y - //SEG118 wrap_y::@return - //SEG119 [65] return + //SEG116 wrap_y::@return + //SEG117 [64] return rts - //SEG120 wrap_y::@4 + //SEG118 wrap_y::@4 b4: - //SEG121 [66] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 + //SEG119 [65] (signed word) wrap_y::y#3 ← (signed word) wrap_y::y#6 + (signed word) $c8 -- vwsz1=vwsz1_plus_vwsc1 clc lda y adc #<$c8 @@ -8671,9 +8651,9 @@ wrap_y: { adc #>$c8 sta y+1 jmp b3 - //SEG122 wrap_y::@2 + //SEG120 wrap_y::@2 b2: - //SEG123 [67] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 + //SEG121 [66] (signed word) wrap_y::y#2 ← (signed word) wrap_y::y#4 - (signed word) $c8 -- vwsz1=vwsz1_minus_vwsc1 lda y sec sbc #<$c8 @@ -8683,7 +8663,7 @@ wrap_y: { sta y+1 jmp b1 } -//SEG124 sin16s_gen2 +//SEG122 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -8698,36 +8678,36 @@ sin16s_gen2: { .label sintab = $c .label x = 8 .label i = $e - //SEG125 [69] call div32u16u - //SEG126 [157] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG123 [68] call div32u16u + //SEG124 [156] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u - //SEG127 [70] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG128 sin16s_gen2::@2 - //SEG129 [71] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG130 [72] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] - //SEG131 [72] phi (word) sin16s_gen2::i#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG125 [69] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG126 sin16s_gen2::@2 + //SEG127 [70] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG128 [71] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] + //SEG129 [71] phi (word) sin16s_gen2::i#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #0 sta i sta i+1 - //SEG132 [72] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[$200]) sin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG130 [71] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[$200]) sin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #sin sta sintab+1 - //SEG133 [72] phi (dword) sin16s_gen2::x#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG131 [71] phi (dword) sin16s_gen2::x#2 = (byte) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 // u[4.28] - //SEG134 [72] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] - //SEG135 [72] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy - //SEG136 [72] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy - //SEG137 [72] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy - //SEG138 sin16s_gen2::@1 + //SEG132 [71] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] + //SEG133 [71] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy + //SEG134 [71] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy + //SEG135 [71] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy + //SEG136 sin16s_gen2::@1 b1: - //SEG139 [73] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG137 [72] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -8736,29 +8716,29 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG140 [74] call sin16s + //SEG138 [73] call sin16s jsr sin16s - //SEG141 [75] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG142 sin16s_gen2::@3 - //SEG143 [76] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG144 [77] call mul16s + //SEG139 [74] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG140 sin16s_gen2::@3 + //SEG141 [75] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG142 [76] call mul16s jsr mul16s - //SEG145 [78] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 - //SEG146 sin16s_gen2::@4 - //SEG147 [79] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG148 [80] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG143 [77] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG144 sin16s_gen2::@4 + //SEG145 [78] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG146 [79] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _8 lda _5+3 sta _8+1 - //SEG149 [81] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG147 [80] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG150 [82] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + //SEG148 [81] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 lda #SIZEOF_SIGNED_WORD clc adc sintab @@ -8766,7 +8746,7 @@ sin16s_gen2: { bcc !+ inc sintab+1 !: - //SEG151 [83] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG149 [82] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8780,12 +8760,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG152 [84] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG150 [83] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG153 [85] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG151 [84] if((word) sin16s_gen2::i#1<(const word) SIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>SIN_SIZE bcc b1 @@ -8794,11 +8774,11 @@ sin16s_gen2: { cmp #mul16u] - //SEG160 [98] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - //SEG161 [98] phi (dword) mul16u::mb#0 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vduz1=vduc1 + //SEG156 [87] call mul16u + //SEG157 [97] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG158 [97] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + //SEG159 [97] phi (dword) mul16u::mb#0 = (word)(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vduz1=vduc1 lda #sin16s_gen2.ampl @@ -8826,19 +8806,19 @@ mul16s: { lda #>sin16s_gen2.ampl>>$10 sta mul16u.mb+3 jsr mul16u - //SEG162 [89] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG163 mul16s::@4 - //SEG164 [90] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG165 [91] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG160 [88] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG161 mul16s::@4 + //SEG162 [89] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG163 [90] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b2 - //SEG166 mul16s::@3 - //SEG167 [92] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG164 mul16s::@3 + //SEG165 [91] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG168 [93] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG166 [92] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG169 [94] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG167 [93] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG170 [95] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] - //SEG171 [95] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy - //SEG172 mul16s::@1 - //SEG173 mul16s::@2 + //SEG168 [94] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + //SEG169 [94] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + //SEG170 mul16s::@1 + //SEG171 mul16s::@2 b2: - //SEG174 [96] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 - //SEG175 mul16s::@return - //SEG176 [97] return + //SEG172 [95] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + //SEG173 mul16s::@return + //SEG174 [96] return rts } -//SEG177 mul16u +//SEG175 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($16) a, word zeropage($14) b) mul16u: { @@ -8870,35 +8850,35 @@ mul16u: { .label res = $10 .label return = $10 .label b = $14 - //SEG178 [99] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG179 [99] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG180 [99] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG176 [98] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG177 [98] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG178 [98] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res sta res+1 sta res+2 sta res+3 - //SEG181 [99] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG182 mul16u::@1 + //SEG179 [98] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG180 mul16u::@1 b1: - //SEG183 [100] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG181 [99] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG184 mul16u::@return - //SEG185 [101] return + //SEG182 mul16u::@return + //SEG183 [100] return rts - //SEG186 mul16u::@2 + //SEG184 mul16u::@2 b2: - //SEG187 [102] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG185 [101] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG188 [103] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG186 [102] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG189 mul16u::@4 - //SEG190 [104] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG187 mul16u::@4 + //SEG188 [103] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8912,25 +8892,25 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG191 [105] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] - //SEG192 [105] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy - //SEG193 mul16u::@3 + //SEG189 [104] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG190 [104] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG191 mul16u::@3 b3: - //SEG194 [106] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + //SEG192 [105] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - //SEG195 [107] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + //SEG193 [106] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG196 [99] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] - //SEG197 [99] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG198 [99] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG199 [99] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG194 [98] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG195 [98] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG196 [98] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG197 [98] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG200 sin16s +//SEG198 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -8949,7 +8929,7 @@ sin16s: { .label x5_128 = $3f .label sinx = $21 .label isUpper = $1c - //SEG201 [108] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG199 [107] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b4 @@ -8966,8 +8946,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG204 [110] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG205 [110] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG202 [109] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG203 [109] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG206 [110] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG204 [109] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG207 [110] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG205 [109] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG208 [110] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG206 [109] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG209 [110] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG210 sin16s::@1 + //SEG207 [109] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG208 sin16s::@1 b1: - //SEG211 [111] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG209 [110] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2 @@ -9012,8 +8992,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG214 [113] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG215 [113] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG216 sin16s::@2 + //SEG212 [112] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG213 [112] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG214 sin16s::@2 b2: - //SEG217 [114] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 + //SEG215 [113] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -9040,71 +9020,71 @@ sin16s: { rol _4+3 dey bne !- - //SEG218 [115] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG216 [114] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG219 [116] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG217 [115] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG220 [117] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG218 [116] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG221 [118] call mulu16_sel - //SEG222 [148] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG223 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG219 [117] call mulu16_sel + //SEG220 [147] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG221 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG224 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG225 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG222 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG223 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG226 [119] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG227 sin16s::@7 - //SEG228 [120] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG224 [118] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG225 sin16s::@7 + //SEG226 [119] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG229 [121] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG230 [122] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG227 [120] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG228 [121] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG231 [123] call mulu16_sel - //SEG232 [148] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] - //SEG233 [148] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG229 [122] call mulu16_sel + //SEG230 [147] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG231 [147] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG234 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG235 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG232 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG233 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG236 [124] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG234 [123] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 - //SEG237 sin16s::@8 - //SEG238 [125] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG239 [126] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG240 [127] call mulu16_sel - //SEG241 [148] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG242 [148] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG235 sin16s::@8 + //SEG236 [124] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG237 [125] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG238 [126] call mulu16_sel + //SEG239 [147] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG240 [147] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG243 [148] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG241 [147] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG244 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG242 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG245 [128] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG246 sin16s::@9 - //SEG247 [129] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG248 [130] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG243 [127] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG244 sin16s::@9 + //SEG245 [128] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG246 [129] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -9112,43 +9092,43 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG249 [131] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG250 [132] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG247 [130] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG248 [131] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG251 [133] call mulu16_sel - //SEG252 [148] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG253 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG249 [132] call mulu16_sel + //SEG250 [147] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG251 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG254 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG255 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG252 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG253 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG256 [134] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG254 [133] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 - //SEG257 sin16s::@10 - //SEG258 [135] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG259 [136] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG260 [137] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG255 sin16s::@10 + //SEG256 [134] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG257 [135] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG258 [136] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG261 [138] call mulu16_sel - //SEG262 [148] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG263 [148] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG259 [137] call mulu16_sel + //SEG260 [147] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG261 [147] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG264 [148] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG265 [148] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG262 [147] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG263 [147] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG266 [139] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG267 sin16s::@11 - //SEG268 [140] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG269 [141] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 + //SEG264 [138] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG265 sin16s::@11 + //SEG266 [139] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG267 [140] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4 lsr x5_128+1 ror x5_128 lsr x5_128+1 @@ -9157,7 +9137,7 @@ sin16s: { ror x5_128 lsr x5_128+1 ror x5_128 - //SEG270 [142] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG268 [141] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -9165,12 +9145,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG271 [143] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG269 [142] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG272 sin16s::@6 - //SEG273 [144] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG270 sin16s::@6 + //SEG271 [143] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda #0 sbc sinx @@ -9178,17 +9158,17 @@ sin16s: { lda #0 sbc sinx+1 sta sinx+1 - //SEG274 [145] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] - //SEG275 [145] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG276 sin16s::@3 + //SEG272 [144] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG273 [144] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG274 sin16s::@3 b3: - //SEG277 sin16s::@return - //SEG278 [146] return + //SEG275 sin16s::@return + //SEG276 [145] return rts - //SEG279 sin16s::@12 - //SEG280 [147] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG277 sin16s::@12 + //SEG278 [146] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG281 mulu16_sel +//SEG279 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($23) v1, word zeropage($14) v2, byte register(X) select) @@ -9200,16 +9180,16 @@ mulu16_sel: { .label return = $3f .label return_1 = $23 .label return_10 = $23 - //SEG282 [149] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG280 [148] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG283 [150] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG284 [151] call mul16u - //SEG285 [98] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] - //SEG286 [98] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG287 [98] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- vduz1=vwuz2 + //SEG281 [149] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG282 [150] call mul16u + //SEG283 [97] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG284 [97] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG285 [97] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -9218,10 +9198,10 @@ mulu16_sel: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - //SEG288 [152] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG289 mulu16_sel::@1 - //SEG290 [153] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG291 [154] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG286 [151] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG287 mulu16_sel::@1 + //SEG288 [152] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG289 [153] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -9232,55 +9212,55 @@ mulu16_sel: { dex bne !- !e: - //SEG292 [155] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG290 [154] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG293 mulu16_sel::@return - //SEG294 [156] return + //SEG291 mulu16_sel::@return + //SEG292 [155] return rts } -//SEG295 div32u16u +//SEG293 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $41 .label quotient_lo = $29 .label return = $35 - //SEG296 [158] call divr16u - //SEG297 [167] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG298 [167] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG294 [157] call divr16u + //SEG295 [166] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG296 [166] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG299 [167] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG297 [166] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG300 [159] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG301 div32u16u::@1 - //SEG302 [160] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG298 [158] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG299 div32u16u::@1 + //SEG300 [159] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG303 [161] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG304 [162] call divr16u - //SEG305 [167] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] - //SEG306 [167] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG301 [160] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG302 [161] call divr16u + //SEG303 [166] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG304 [166] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG307 [167] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG305 [166] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG308 [163] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG309 div32u16u::@2 - //SEG310 [164] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG311 [165] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG306 [162] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG307 div32u16u::@2 + //SEG308 [163] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG309 [164] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -9289,11 +9269,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG312 div32u16u::@return - //SEG313 [166] return + //SEG310 div32u16u::@return + //SEG311 [165] return rts } -//SEG314 divr16u +//SEG312 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -9304,48 +9284,48 @@ divr16u: { .label dividend = $27 .label quotient = $29 .label return = $29 - //SEG315 [168] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG316 [168] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG313 [167] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG314 [167] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG317 [168] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG315 [167] phi (word) divr16u::quotient#3 = (byte) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG318 [168] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG319 [168] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG320 [168] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG321 [168] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG322 [168] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG323 [168] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG324 [168] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG325 divr16u::@1 + //SEG316 [167] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG317 [167] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG318 [167] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG319 [167] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG320 [167] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG321 [167] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG322 [167] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG323 divr16u::@1 b1: - //SEG326 [169] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG324 [168] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG327 [170] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG325 [169] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG328 [171] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG326 [170] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG329 [172] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG327 [171] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG330 divr16u::@4 - //SEG331 [173] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG328 divr16u::@4 + //SEG329 [172] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG332 [174] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG333 [174] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG334 divr16u::@2 + //SEG330 [173] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG331 [173] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG332 divr16u::@2 b2: - //SEG335 [175] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG333 [174] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG336 [176] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 + //SEG334 [175] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG337 [177] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG335 [176] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3 @@ -9354,13 +9334,13 @@ divr16u: { cmp #SIN_SIZE sta rem+1 - //SEG341 [180] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG342 [180] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG343 [180] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG344 divr16u::@3 + //SEG339 [179] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG340 [179] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG341 [179] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG342 divr16u::@3 b3: - //SEG345 [181] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG343 [180] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG346 [182] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG344 [181] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG347 divr16u::@6 - //SEG348 [183] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG349 divr16u::@return - //SEG350 [184] return + //SEG345 divr16u::@6 + //SEG346 [182] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG347 divr16u::@return + //SEG348 [183] return rts } -//SEG351 bitmap_clear +//SEG349 bitmap_clear // Clear all graphics on the bitmap // bgcol - the background color to fill the screen with // fgcol - the foreground color to fill the screen with bitmap_clear: { .const col = WHITE*$10 - //SEG352 [186] call memset - //SEG353 [190] phi from bitmap_clear to memset [phi:bitmap_clear->memset] - //SEG354 [190] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + //SEG350 [185] call memset + //SEG351 [189] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + //SEG352 [189] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col - //SEG355 [190] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#1] -- vwuz1=vwuc1 + //SEG353 [189] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#1] -- vwuz1=vwuc1 lda #<$3e8 sta memset.num lda #>$3e8 sta memset.num+1 - //SEG356 [190] phi (void*) memset::str#2 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#2] -- pvoz1=pvoc1 + //SEG354 [189] phi (void*) memset::str#2 = (void*)(const byte*) SCREEN#0 [phi:bitmap_clear->memset#2] -- pvoz1=pvoc1 lda #SCREEN sta memset.str+1 jsr memset - //SEG357 [187] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] - //SEG358 bitmap_clear::@1 - //SEG359 [188] call memset - //SEG360 [190] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] - //SEG361 [190] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + //SEG355 [186] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG356 bitmap_clear::@1 + //SEG357 [187] call memset + //SEG358 [189] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + //SEG359 [189] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 - //SEG362 [190] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#1] -- vwuz1=vwuc1 + //SEG360 [189] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#1] -- vwuz1=vwuc1 lda #<$1f40 sta memset.num lda #>$1f40 sta memset.num+1 - //SEG363 [190] phi (void*) memset::str#2 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#2] -- pvoz1=pvoc1 + //SEG361 [189] phi (void*) memset::str#2 = (void*)(const byte*) BITMAP#0 [phi:bitmap_clear::@1->memset#2] -- pvoz1=pvoc1 lda #BITMAP sta memset.str+1 jsr memset - //SEG364 bitmap_clear::@return - //SEG365 [189] return + //SEG362 bitmap_clear::@return + //SEG363 [188] return rts } -//SEG366 memset +//SEG364 memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // memset(void* zeropage($2b) str, byte register(X) c, word zeropage($2d) num) memset: { @@ -9434,7 +9414,7 @@ memset: { .label dst = $2b .label str = $2b .label num = $2d - //SEG367 [191] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + //SEG365 [190] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 lda end clc adc str @@ -9442,99 +9422,99 @@ memset: { lda end+1 adc str+1 sta end+1 - //SEG368 [192] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 - //SEG369 [193] phi from memset memset::@1 to memset::@1 [phi:memset/memset::@1->memset::@1] - //SEG370 [193] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset/memset::@1->memset::@1#0] -- register_copy - //SEG371 memset::@1 + //SEG366 [191] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2 + //SEG367 [192] phi from memset memset::@1 to memset::@1 [phi:memset/memset::@1->memset::@1] + //SEG368 [192] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset/memset::@1->memset::@1#0] -- register_copy + //SEG369 memset::@1 b1: - //SEG372 [194] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + //SEG370 [193] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y - //SEG373 [195] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + //SEG371 [194] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 inc dst bne !+ inc dst+1 !: - //SEG374 [196] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG372 [195] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1 -- pbuz1_neq_pbuz2_then_la1 lda dst+1 cmp end+1 bne b1 lda dst cmp end bne b1 - //SEG375 memset::@return - //SEG376 [197] return + //SEG373 memset::@return + //SEG374 [196] return rts } -//SEG377 bitmap_init +//SEG375 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _7 = $43 .label yoffs = $2f - //SEG378 [199] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG379 [199] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG376 [198] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG377 [198] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG380 [199] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG378 [198] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 - //SEG381 [199] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG382 [199] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG383 [199] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG384 bitmap_init::@1 + //SEG379 [198] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG380 [198] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG381 [198] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG382 bitmap_init::@1 b1: - //SEG385 [200] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG383 [199] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG386 [201] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + //SEG384 [200] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG387 [202] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + //SEG385 [201] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG388 [204] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG389 [204] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG386 [203] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG387 [203] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 - //SEG390 [203] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] - //SEG391 bitmap_init::@6 - //SEG392 [204] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] - //SEG393 [204] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy - //SEG394 bitmap_init::@2 + //SEG388 [202] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + //SEG389 bitmap_init::@6 + //SEG390 [203] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + //SEG391 [203] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + //SEG392 bitmap_init::@2 b2: - //SEG395 [205] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG393 [204] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG396 [206] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG394 [205] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG397 [207] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG398 [207] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG395 [206] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG396 [206] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG399 [207] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG397 [206] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG400 [207] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG401 [207] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG402 [207] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG403 bitmap_init::@3 + //SEG398 [206] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG399 [206] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG400 [206] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG401 bitmap_init::@3 b3: - //SEG404 [208] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG402 [207] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax _7 - //SEG405 [209] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG403 [208] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG406 [210] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG404 [209] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _7 - //SEG407 [211] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG405 [210] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG408 [212] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG406 [211] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG409 [213] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG407 [212] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG410 [214] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG408 [213] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp _7 bne b4 - //SEG411 bitmap_init::@5 - //SEG412 [215] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG409 bitmap_init::@5 + //SEG410 [214] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -9542,28 +9522,28 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG413 [216] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] - //SEG414 [216] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy - //SEG415 bitmap_init::@4 + //SEG411 [215] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + //SEG412 [215] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + //SEG413 bitmap_init::@4 b4: - //SEG416 [217] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG414 [216] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG417 [218] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG415 [217] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG418 bitmap_init::@return - //SEG419 [219] return + //SEG416 bitmap_init::@return + //SEG417 [218] return rts } -//SEG420 File Data +//SEG418 File Data // Tables for the plotter - initialized by calling bitmap_init(); bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 sin: .fill 2*$200, 0 -.pc = sin2 "sin2" - .for(var i=0; i<512; i++) { +sin2: +.for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } diff --git a/src/test/ref/examples/sinplotter/sine-plotter.sym b/src/test/ref/examples/sinplotter/sine-plotter.sym index a519c5214..838556b6a 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.sym +++ b/src/test/ref/examples/sinplotter/sine-plotter.sym @@ -1,5 +1,4 @@ (label) @1 -(label) @2 (label) @begin (label) @end (byte*) BGCOL @@ -378,8 +377,11 @@ (dword) sin16s_gen2::x (dword) sin16s_gen2::x#1 x zp ZP_DWORD:8 7.333333333333333 (dword) sin16s_gen2::x#2 x zp ZP_DWORD:8 3.0 -(signed word*) sin2 -(const signed word*) sin2#0 sin2 = (signed word*) 5120 +(signed word[$200]) sin2 +(const signed word[$200]) sin2#0 sin2 = kickasm {{ .for(var i=0; i<512; i++) { + .word sin(toRadians([i*360]/512))*320 + } + }} (byte()) wrap_y((signed word) wrap_y::y) (label) wrap_y::@1 (label) wrap_y::@2