From c9768022af8eec1a30c25e49c1052bc85b5ee0ed Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Wed, 10 Apr 2019 08:27:36 +0200 Subject: [PATCH] Optimized unrolled plasma more by moving x-value lookup outside the unrolled loop. --- src/test/kc/examples/plasma/plasma-unroll.kc | 4 +- .../ref/examples/plasma/plasma-unroll.asm | 60 +- .../ref/examples/plasma/plasma-unroll.cfg | 203 +- .../ref/examples/plasma/plasma-unroll.log | 2164 +++++++++-------- .../ref/examples/plasma/plasma-unroll.sym | 15 +- 5 files changed, 1230 insertions(+), 1216 deletions(-) diff --git a/src/test/kc/examples/plasma/plasma-unroll.kc b/src/test/kc/examples/plasma/plasma-unroll.kc index 7ae77990e..1dfe4640f 100644 --- a/src/test/kc/examples/plasma/plasma-unroll.kc +++ b/src/test/kc/examples/plasma/plasma-unroll.kc @@ -62,8 +62,10 @@ void doplasma(unsigned char* screen) { c2A += 2; c2B -= 3; for (unsigned char i = 0; i < 40; ++i) { + unsigned char xval = xbuf[i]; + // Use experimental loop unrolling to increase the speed inline for (unsigned char ii = 0; ii < 25; ++ii) { - (screen+ii*40)[i] = (xbuf[i] + ybuf[ii]); + (screen+ii*40)[i] = xval + ybuf[ii]; } } } diff --git a/src/test/ref/examples/plasma/plasma-unroll.asm b/src/test/ref/examples/plasma/plasma-unroll.asm index 52949adc1..b5bbc160d 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.asm +++ b/src/test/ref/examples/plasma/plasma-unroll.asm @@ -136,112 +136,114 @@ doplasma: { axs #3 stx c2B ldx #0 - b6: - lda xbuf,x + b5: + ldy xbuf,x + // Use experimental loop unrolling to increase the speed + tya clc adc ybuf sta SCREEN1,x - lda xbuf,x + tya clc adc ybuf+1 sta SCREEN1+1*$28,x - lda xbuf,x + tya clc adc ybuf+2 sta SCREEN1+2*$28,x - lda xbuf,x + tya clc adc ybuf+3 sta SCREEN1+3*$28,x - lda xbuf,x + tya clc adc ybuf+4 sta SCREEN1+4*$28,x - lda xbuf,x + tya clc adc ybuf+5 sta SCREEN1+5*$28,x - lda xbuf,x + tya clc adc ybuf+6 sta SCREEN1+6*$28,x - lda xbuf,x + tya clc adc ybuf+7 sta SCREEN1+7*$28,x - lda xbuf,x + tya clc adc ybuf+8 sta SCREEN1+8*$28,x - lda xbuf,x + tya clc adc ybuf+9 sta SCREEN1+9*$28,x - lda xbuf,x + tya clc adc ybuf+$a sta SCREEN1+$a*$28,x - lda xbuf,x + tya clc adc ybuf+$b sta SCREEN1+$b*$28,x - lda xbuf,x + tya clc adc ybuf+$c sta SCREEN1+$c*$28,x - lda xbuf,x + tya clc adc ybuf+$d sta SCREEN1+$d*$28,x - lda xbuf,x + tya clc adc ybuf+$e sta SCREEN1+$e*$28,x - lda xbuf,x + tya clc adc ybuf+$f sta SCREEN1+$f*$28,x - lda xbuf,x + tya clc adc ybuf+$10 sta SCREEN1+$10*$28,x - lda xbuf,x + tya clc adc ybuf+$11 sta SCREEN1+$11*$28,x - lda xbuf,x + tya clc adc ybuf+$12 sta SCREEN1+$12*$28,x - lda xbuf,x + tya clc adc ybuf+$13 sta SCREEN1+$13*$28,x - lda xbuf,x + tya clc adc ybuf+$14 sta SCREEN1+$14*$28,x - lda xbuf,x + tya clc adc ybuf+$15 sta SCREEN1+$15*$28,x - lda xbuf,x + tya clc adc ybuf+$16 sta SCREEN1+$16*$28,x - lda xbuf,x + tya clc adc ybuf+$17 sta SCREEN1+$17*$28,x - lda xbuf,x + tya clc adc ybuf+$18 sta SCREEN1+$18*$28,x inx cpx #$28 - bcs !b6+ - jmp b6 - !b6: + bcs !b5+ + jmp b5 + !b5: rts xbuf: .fill $28, 0 ybuf: .fill $19, 0 diff --git a/src/test/ref/examples/plasma/plasma-unroll.cfg b/src/test/ref/examples/plasma/plasma-unroll.cfg index ad49260d4..acfd8b720 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.cfg +++ b/src/test/ref/examples/plasma/plasma-unroll.cfg @@ -80,203 +80,204 @@ doplasma::@4: scope:[doplasma] from doplasma::@3 [40] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 to:doplasma::@5 doplasma::@5: scope:[doplasma] from doplasma::@4 doplasma::@7 - [41] (byte) doplasma::i2#4 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) + [41] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) + [42] (byte) doplasma::xval#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) to:doplasma::@6 doplasma::@6: scope:[doplasma] from doplasma::@5 - [42] (byte~) doplasma::$6 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0) - [43] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#4) ← (byte~) doplasma::$6 + [43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0) + [44] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6 to:doplasma::@6_1 doplasma::@6_1: scope:[doplasma] from doplasma::@6 - [44] (byte~) doplasma::$11 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - [45] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$11 + [45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) + [46] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$11 to:doplasma::@6_2 doplasma::@6_2: scope:[doplasma] from doplasma::@6_1 - [46] (byte~) doplasma::$14 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) - [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$14 + [47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$14 to:doplasma::@6_3 doplasma::@6_3: scope:[doplasma] from doplasma::@6_2 - [48] (byte~) doplasma::$17 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$17 + [49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$17 to:doplasma::@6_4 doplasma::@6_4: scope:[doplasma] from doplasma::@6_3 - [50] (byte~) doplasma::$20 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) - [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$20 + [51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) + [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$20 to:doplasma::@6_5 doplasma::@6_5: scope:[doplasma] from doplasma::@6_4 - [52] (byte~) doplasma::$23 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) - [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$23 + [53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) + [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$23 to:doplasma::@6_6 doplasma::@6_6: scope:[doplasma] from doplasma::@6_5 - [54] (byte~) doplasma::$26 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) - [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$26 + [55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) + [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$26 to:doplasma::@6_7 doplasma::@6_7: scope:[doplasma] from doplasma::@6_6 - [56] (byte~) doplasma::$29 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) - [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$29 + [57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) + [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$29 to:doplasma::@6_8 doplasma::@6_8: scope:[doplasma] from doplasma::@6_7 - [58] (byte~) doplasma::$32 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) - [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$32 + [59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) + [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$32 to:doplasma::@6_9 doplasma::@6_9: scope:[doplasma] from doplasma::@6_8 - [60] (byte~) doplasma::$35 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) - [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$35 + [61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) + [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$35 to:doplasma::@6_10 doplasma::@6_10: scope:[doplasma] from doplasma::@6_9 - [62] (byte~) doplasma::$38 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) - [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$38 + [63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) + [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$38 to:doplasma::@6_11 doplasma::@6_11: scope:[doplasma] from doplasma::@6_10 - [64] (byte~) doplasma::$41 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) - [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$41 + [65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) + [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$41 to:doplasma::@6_12 doplasma::@6_12: scope:[doplasma] from doplasma::@6_11 - [66] (byte~) doplasma::$44 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) - [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$44 + [67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) + [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$44 to:doplasma::@6_13 doplasma::@6_13: scope:[doplasma] from doplasma::@6_12 - [68] (byte~) doplasma::$47 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) - [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$47 + [69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) + [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$47 to:doplasma::@6_14 doplasma::@6_14: scope:[doplasma] from doplasma::@6_13 - [70] (byte~) doplasma::$50 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) - [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$50 + [71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) + [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$50 to:doplasma::@6_15 doplasma::@6_15: scope:[doplasma] from doplasma::@6_14 - [72] (byte~) doplasma::$53 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) - [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$53 + [73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) + [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$53 to:doplasma::@6_16 doplasma::@6_16: scope:[doplasma] from doplasma::@6_15 - [74] (byte~) doplasma::$56 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) - [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$56 + [75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) + [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$56 to:doplasma::@6_17 doplasma::@6_17: scope:[doplasma] from doplasma::@6_16 - [76] (byte~) doplasma::$59 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) - [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$59 + [77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) + [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$59 to:doplasma::@6_18 doplasma::@6_18: scope:[doplasma] from doplasma::@6_17 - [78] (byte~) doplasma::$62 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) - [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$62 + [79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) + [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$62 to:doplasma::@6_19 doplasma::@6_19: scope:[doplasma] from doplasma::@6_18 - [80] (byte~) doplasma::$65 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) - [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$65 + [81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) + [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$65 to:doplasma::@6_20 doplasma::@6_20: scope:[doplasma] from doplasma::@6_19 - [82] (byte~) doplasma::$68 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) - [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$68 + [83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) + [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$68 to:doplasma::@6_21 doplasma::@6_21: scope:[doplasma] from doplasma::@6_20 - [84] (byte~) doplasma::$71 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) - [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$71 + [85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) + [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$71 to:doplasma::@6_22 doplasma::@6_22: scope:[doplasma] from doplasma::@6_21 - [86] (byte~) doplasma::$74 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) - [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$74 + [87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) + [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$74 to:doplasma::@6_23 doplasma::@6_23: scope:[doplasma] from doplasma::@6_22 - [88] (byte~) doplasma::$77 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) - [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$77 + [89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) + [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$77 to:doplasma::@6_24 doplasma::@6_24: scope:[doplasma] from doplasma::@6_23 - [90] (byte~) doplasma::$80 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) - [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$80 + [91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) + [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$80 to:doplasma::@7 doplasma::@7: scope:[doplasma] from doplasma::@6_24 - [92] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#4 - [93] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 + [93] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 + [94] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 to:doplasma::@return doplasma::@return: scope:[doplasma] from doplasma::@7 - [94] return + [95] return to:@return makecharset: scope:[makecharset] from main::@2 - [95] phi() - [96] call sid_rnd_init + [96] phi() + [97] call sid_rnd_init to:makecharset::@10 makecharset::@10: scope:[makecharset] from makecharset - [97] phi() - [98] call print_cls + [98] phi() + [99] call print_cls to:makecharset::@1 makecharset::@1: scope:[makecharset] from makecharset::@10 makecharset::@9 - [99] (byte*) print_char_cursor#45 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 ) - [99] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 ) - [100] (byte~) makecharset::$2 ← < (word) makecharset::c#2 - [101] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) + [100] (byte*) print_char_cursor#45 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 ) + [100] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 ) + [101] (byte~) makecharset::$2 ← < (word) makecharset::c#2 + [102] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) to:makecharset::@2 makecharset::@2: scope:[makecharset] from makecharset::@1 makecharset::@6 - [102] (byte) makecharset::i#7 ← phi( makecharset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@6/(byte) makecharset::i#1 ) + [103] (byte) makecharset::i#7 ← phi( makecharset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@6/(byte) makecharset::i#1 ) to:makecharset::@3 makecharset::@3: scope:[makecharset] from makecharset::@2 makecharset::@4 - [103] (byte) makecharset::b#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::b#3 ) - [103] (byte) makecharset::ii#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::ii#1 ) - [104] call sid_rnd - [105] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + [104] (byte) makecharset::b#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::b#3 ) + [104] (byte) makecharset::ii#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::ii#1 ) + [105] call sid_rnd + [106] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 to:makecharset::@11 makecharset::@11: scope:[makecharset] from makecharset::@3 - [106] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 - [107] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff - [108] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 + [107] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 + [108] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff + [109] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 to:makecharset::@5 makecharset::@5: scope:[makecharset] from makecharset::@11 - [109] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) + [110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) to:makecharset::@4 makecharset::@4: scope:[makecharset] from makecharset::@11 makecharset::@5 - [110] (byte) makecharset::b#3 ← phi( makecharset::@11/(byte) makecharset::b#2 makecharset::@5/(byte) makecharset::b#1 ) - [111] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 - [112] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 + [111] (byte) makecharset::b#3 ← phi( makecharset::@11/(byte) makecharset::b#2 makecharset::@5/(byte) makecharset::b#1 ) + [112] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 + [113] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 to:makecharset::@6 makecharset::@6: scope:[makecharset] from makecharset::@4 - [113] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [114] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 - [115] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 - [116] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 - [117] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 + [114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 + [116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 + [117] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 + [118] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 to:makecharset::@7 makecharset::@7: scope:[makecharset] from makecharset::@6 - [118] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [119] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 + [119] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [120] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 to:makecharset::@8 makecharset::@8: scope:[makecharset] from makecharset::@7 - [120] phi() - [121] call print_char + [121] phi() + [122] call print_char to:makecharset::@9 makecharset::@9: scope:[makecharset] from makecharset::@7 makecharset::@8 - [122] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#45 ) - [123] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 - [124] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 + [123] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#45 ) + [124] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 + [125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 to:makecharset::@return makecharset::@return: scope:[makecharset] from makecharset::@9 - [125] return + [126] return to:@return print_char: scope:[print_char] from makecharset::@8 - [126] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 - [127] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 + [127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 + [128] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [128] return + [129] return to:@return sid_rnd: scope:[sid_rnd] from makecharset::@3 - [129] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [130] return + [131] return to:@return print_cls: scope:[print_cls] from makecharset::@10 - [131] phi() + [132] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [132] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [133] *((byte*) print_cls::sc#2) ← (byte) ' ' - [134] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [135] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 + [133] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [134] *((byte*) print_cls::sc#2) ← (byte) ' ' + [135] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [136] return + [137] return to:@return sid_rnd_init: scope:[sid_rnd_init] from makecharset - [137] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff - [138] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [138] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff + [139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [139] return + [140] return to:@return diff --git a/src/test/ref/examples/plasma/plasma-unroll.log b/src/test/ref/examples/plasma/plasma-unroll.log index 7c52b5cf2..414798863 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.log +++ b/src/test/ref/examples/plasma/plasma-unroll.log @@ -394,8 +394,9 @@ doplasma::@5: scope:[doplasma] from doplasma::@4 doplasma::@7 (byte) c2A#22 ← phi( doplasma::@4/(byte) c2A#3 doplasma::@7/(byte) c2A#16 ) (byte) c1B#20 ← phi( doplasma::@4/(byte) c1B#22 doplasma::@7/(byte) c1B#15 ) (byte) c1A#20 ← phi( doplasma::@4/(byte) c1A#22 doplasma::@7/(byte) c1A#15 ) - (byte) doplasma::i2#4 ← phi( doplasma::@4/(byte) doplasma::i2#0 doplasma::@7/(byte) doplasma::i2#1 ) (byte*) doplasma::screen#2 ← phi( doplasma::@4/(byte*) doplasma::screen#3 doplasma::@7/(byte*) doplasma::screen#4 ) + (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte) doplasma::i2#0 doplasma::@7/(byte) doplasma::i2#1 ) + (byte) doplasma::xval#0 ← *((byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) (byte) doplasma::ii#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:doplasma::@6 doplasma::@6: scope:[doplasma] from doplasma::@5 doplasma::@6 @@ -403,13 +404,14 @@ doplasma::@6: scope:[doplasma] from doplasma::@5 doplasma::@6 (byte) c2A#20 ← phi( doplasma::@5/(byte) c2A#22 doplasma::@6/(byte) c2A#20 ) (byte) c1B#18 ← phi( doplasma::@5/(byte) c1B#20 doplasma::@6/(byte) c1B#18 ) (byte) c1A#18 ← phi( doplasma::@5/(byte) c1A#20 doplasma::@6/(byte) c1A#18 ) - (byte) doplasma::i2#2 ← phi( doplasma::@5/(byte) doplasma::i2#4 doplasma::@6/(byte) doplasma::i2#2 ) + (byte) doplasma::i2#3 ← phi( doplasma::@5/(byte) doplasma::i2#2 doplasma::@6/(byte) doplasma::i2#3 ) + (byte) doplasma::xval#1 ← phi( doplasma::@5/(byte) doplasma::xval#0 doplasma::@6/(byte) doplasma::xval#1 ) (byte*) doplasma::screen#1 ← phi( doplasma::@5/(byte*) doplasma::screen#2 doplasma::@6/(byte*) doplasma::screen#1 ) (byte) doplasma::ii#2 ← phi( doplasma::@5/(byte) doplasma::ii#0 doplasma::@6/(byte) doplasma::ii#1 ) (byte/signed word/word/dword/signed dword~) doplasma::$4 ← (byte) doplasma::ii#2 * (byte/signed byte/word/signed word/dword/signed dword) $28 (byte*~) doplasma::$5 ← (byte*) doplasma::screen#1 + (byte/signed word/word/dword/signed dword~) doplasma::$4 - (byte~) doplasma::$6 ← *((byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) + *((byte[$19]) doplasma::ybuf#0 + (byte) doplasma::ii#2) - *((byte*~) doplasma::$5 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6 + (byte~) doplasma::$6 ← (byte) doplasma::xval#1 + *((byte[$19]) doplasma::ybuf#0 + (byte) doplasma::ii#2) + *((byte*~) doplasma::$5 + (byte) doplasma::i2#3) ← (byte~) doplasma::$6 (byte) doplasma::ii#1 ← ++ (byte) doplasma::ii#2 (bool~) doplasma::$7 ← (byte) doplasma::ii#1 < (byte/signed byte/word/signed word/dword/signed dword) $19 unroll if((bool~) doplasma::$7) goto doplasma::@6 @@ -420,8 +422,8 @@ doplasma::@7: scope:[doplasma] from doplasma::@6 (byte) c2A#16 ← phi( doplasma::@6/(byte) c2A#20 ) (byte) c1B#15 ← phi( doplasma::@6/(byte) c1B#18 ) (byte) c1A#15 ← phi( doplasma::@6/(byte) c1A#18 ) - (byte) doplasma::i2#3 ← phi( doplasma::@6/(byte) doplasma::i2#2 ) - (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#3 + (byte) doplasma::i2#4 ← phi( doplasma::@6/(byte) doplasma::i2#3 ) + (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#4 (bool~) doplasma::$8 ← (byte) doplasma::i2#1 < (byte/signed byte/word/signed word/dword/signed dword) $28 if((bool~) doplasma::$8) goto doplasma::@5 to:doplasma::@return @@ -993,6 +995,9 @@ SYMBOL TABLE SSA (byte*) doplasma::screen#8 (byte[$28]) doplasma::xbuf (byte[$28]) doplasma::xbuf#0 +(byte) doplasma::xval +(byte) doplasma::xval#0 +(byte) doplasma::xval#1 (byte[$19]) doplasma::ybuf (byte[$19]) doplasma::ybuf#0 (void()) main() @@ -1266,8 +1271,8 @@ SYMBOL TABLE SSA (void()) sid_rnd_init() (label) sid_rnd_init::@return -Inversing boolean not [264] (bool~) makecharset::$6 ← (byte~) makecharset::$4 <= (byte) makecharset::s#1 from [263] (bool~) makecharset::$5 ← (byte~) makecharset::$4 > (byte) makecharset::s#1 -Inversing boolean not [282] (bool~) makecharset::$13 ← (byte/word~) makecharset::$11 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [281] (bool~) makecharset::$12 ← (byte/word~) makecharset::$11 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [265] (bool~) makecharset::$6 ← (byte~) makecharset::$4 <= (byte) makecharset::s#1 from [264] (bool~) makecharset::$5 ← (byte~) makecharset::$4 > (byte) makecharset::s#1 +Inversing boolean not [283] (bool~) makecharset::$13 ← (byte/word~) makecharset::$11 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [282] (bool~) makecharset::$12 ← (byte/word~) makecharset::$11 == (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#35 (byte*) print_char_cursor#40 (byte*) print_screen#13 (byte*) print_line_cursor#32 (byte*) print_char_cursor#37 (byte*) print_screen#12 (byte*) print_line_cursor#29 (byte*) print_char_cursor#35 (byte*) print_screen#11 (byte*) print_line_cursor#25 (byte*) print_char_cursor#31 (byte*) print_screen#10 (byte*) print_line_cursor#18 (byte*) print_char_cursor#25 (byte*) print_screen#9 Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 (byte*) print_char_cursor#2 @@ -1305,7 +1310,7 @@ Alias (byte) c2B#15 = (byte) c2B#9 Alias (byte*) doplasma::screen#3 = (byte*) doplasma::screen#5 Alias (byte) c1A#22 = (byte) c1A#24 Alias (byte) c1B#22 = (byte) c1B#24 -Alias (byte) doplasma::i2#2 = (byte) doplasma::i2#3 +Alias (byte) doplasma::i2#3 = (byte) doplasma::i2#4 Alias (byte) c1A#10 = (byte) c1A#15 (byte) c1A#18 (byte) c1A#4 Alias (byte) c1B#10 = (byte) c1B#15 (byte) c1B#18 (byte) c1B#4 Alias (byte) c2A#10 = (byte) c2A#16 (byte) c2A#20 (byte) c2A#4 @@ -1376,7 +1381,8 @@ Self Phi Eliminated (byte*) doplasma::screen#3 Self Phi Eliminated (byte) c1A#22 Self Phi Eliminated (byte) c1B#22 Self Phi Eliminated (byte*) doplasma::screen#1 -Self Phi Eliminated (byte) doplasma::i2#2 +Self Phi Eliminated (byte) doplasma::xval#1 +Self Phi Eliminated (byte) doplasma::i2#3 Self Phi Eliminated (byte) c1A#10 Self Phi Eliminated (byte) c1B#10 Self Phi Eliminated (byte) c2A#10 @@ -1430,7 +1436,8 @@ Redundant Phi (byte*) doplasma::screen#3 (byte*) doplasma::screen#6 Redundant Phi (byte) c1A#22 (byte) c1A#3 Redundant Phi (byte) c1B#22 (byte) c1B#3 Redundant Phi (byte*) doplasma::screen#1 (byte*) doplasma::screen#2 -Redundant Phi (byte) doplasma::i2#2 (byte) doplasma::i2#4 +Redundant Phi (byte) doplasma::xval#1 (byte) doplasma::xval#0 +Redundant Phi (byte) doplasma::i2#3 (byte) doplasma::i2#2 Redundant Phi (byte) c1A#10 (byte) c1A#20 Redundant Phi (byte) c1B#10 (byte) c1B#20 Redundant Phi (byte) c2A#10 (byte) c2A#22 @@ -1459,13 +1466,13 @@ Simple Condition (bool~) print_cls::$1 [97] if((byte*) print_cls::sc#1!=(byte*~) Simple Condition (bool~) main::$3 [141] if((byte*) main::col#1!=rangelast(COLS#0,main::$2)) goto main::@1 Simple Condition (bool~) doplasma::$1 [202] if((byte) doplasma::i#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@1 Simple Condition (bool~) doplasma::$3 [216] if((byte) doplasma::i1#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@3 -Simple Condition (bool~) doplasma::$7 [230] unroll if((byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6 -Simple Condition (bool~) doplasma::$8 [234] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -Simple Condition (bool~) makecharset::$6 [265] if((byte~) makecharset::$4<=(byte) makecharset::s#3) goto makecharset::@4 -Simple Condition (bool~) makecharset::$7 [269] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -Simple Condition (bool~) makecharset::$10 [278] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 -Simple Condition (bool~) makecharset::$13 [283] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 -Simple Condition (bool~) makecharset::$15 [287] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 +Simple Condition (bool~) doplasma::$7 [231] unroll if((byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6 +Simple Condition (bool~) doplasma::$8 [235] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 +Simple Condition (bool~) makecharset::$6 [266] if((byte~) makecharset::$4<=(byte) makecharset::s#3) goto makecharset::@4 +Simple Condition (bool~) makecharset::$7 [270] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 +Simple Condition (bool~) makecharset::$10 [279] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 +Simple Condition (bool~) makecharset::$13 [284] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 +Simple Condition (bool~) makecharset::$15 [288] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -1662,7 +1669,7 @@ Constant (const byte*) doplasma::$5 = doplasma::screen#0+doplasma::$4 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#0) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [50] if((const byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_1 +if() condition always true - replacing block destination [51] if((const byte) doplasma::ii#1<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_1 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_1 tails: doplasma::@6_1 blocks: doplasma::@6_1 Successful SSA optimization Pass2LoopUnroll @@ -1675,7 +1682,7 @@ Constant (const byte*) doplasma::$10 = doplasma::screen#0+doplasma::$9 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#1) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [40] if((const byte) doplasma::ii#4<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_2 +if() condition always true - replacing block destination [41] if((const byte) doplasma::ii#4<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_2 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_2 tails: doplasma::@6_2 blocks: doplasma::@6_2 Successful SSA optimization Pass2LoopUnroll @@ -1688,7 +1695,7 @@ Constant (const byte*) doplasma::$13 = doplasma::screen#0+doplasma::$12 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#4) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [42] if((const byte) doplasma::ii#6<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_3 +if() condition always true - replacing block destination [43] if((const byte) doplasma::ii#6<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_3 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_3 tails: doplasma::@6_3 blocks: doplasma::@6_3 Successful SSA optimization Pass2LoopUnroll @@ -1701,7 +1708,7 @@ Constant (const byte*) doplasma::$16 = doplasma::screen#0+doplasma::$15 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#6) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [44] if((const byte) doplasma::ii#8<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_4 +if() condition always true - replacing block destination [45] if((const byte) doplasma::ii#8<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_4 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_4 tails: doplasma::@6_4 blocks: doplasma::@6_4 Successful SSA optimization Pass2LoopUnroll @@ -1714,7 +1721,7 @@ Constant (const byte*) doplasma::$19 = doplasma::screen#0+doplasma::$18 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#8) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [46] if((const byte) doplasma::ii#10<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_5 +if() condition always true - replacing block destination [47] if((const byte) doplasma::ii#10<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_5 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_5 tails: doplasma::@6_5 blocks: doplasma::@6_5 Successful SSA optimization Pass2LoopUnroll @@ -1727,7 +1734,7 @@ Constant (const byte*) doplasma::$22 = doplasma::screen#0+doplasma::$21 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#10) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [48] if((const byte) doplasma::ii#12<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_6 +if() condition always true - replacing block destination [49] if((const byte) doplasma::ii#12<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_6 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_6 tails: doplasma::@6_6 blocks: doplasma::@6_6 Successful SSA optimization Pass2LoopUnroll @@ -1740,7 +1747,7 @@ Constant (const byte*) doplasma::$25 = doplasma::screen#0+doplasma::$24 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#12) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [50] if((const byte) doplasma::ii#14<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_7 +if() condition always true - replacing block destination [51] if((const byte) doplasma::ii#14<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_7 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_7 tails: doplasma::@6_7 blocks: doplasma::@6_7 Successful SSA optimization Pass2LoopUnroll @@ -1753,7 +1760,7 @@ Constant (const byte*) doplasma::$28 = doplasma::screen#0+doplasma::$27 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#14) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [52] if((const byte) doplasma::ii#16<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_8 +if() condition always true - replacing block destination [53] if((const byte) doplasma::ii#16<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_8 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_8 tails: doplasma::@6_8 blocks: doplasma::@6_8 Successful SSA optimization Pass2LoopUnroll @@ -1766,7 +1773,7 @@ Constant (const byte*) doplasma::$31 = doplasma::screen#0+doplasma::$30 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#16) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [54] if((const byte) doplasma::ii#18<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_9 +if() condition always true - replacing block destination [55] if((const byte) doplasma::ii#18<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_9 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_9 tails: doplasma::@6_9 blocks: doplasma::@6_9 Successful SSA optimization Pass2LoopUnroll @@ -1779,7 +1786,7 @@ Constant (const byte*) doplasma::$34 = doplasma::screen#0+doplasma::$33 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#18) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [56] if((const byte) doplasma::ii#20<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_10 +if() condition always true - replacing block destination [57] if((const byte) doplasma::ii#20<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_10 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_10 tails: doplasma::@6_10 blocks: doplasma::@6_10 Successful SSA optimization Pass2LoopUnroll @@ -1792,7 +1799,7 @@ Constant (const byte*) doplasma::$37 = doplasma::screen#0+doplasma::$36 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#20) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [58] if((const byte) doplasma::ii#22<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_11 +if() condition always true - replacing block destination [59] if((const byte) doplasma::ii#22<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_11 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_11 tails: doplasma::@6_11 blocks: doplasma::@6_11 Successful SSA optimization Pass2LoopUnroll @@ -1805,7 +1812,7 @@ Constant (const byte*) doplasma::$40 = doplasma::screen#0+doplasma::$39 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#22) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [60] if((const byte) doplasma::ii#24<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_12 +if() condition always true - replacing block destination [61] if((const byte) doplasma::ii#24<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_12 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_12 tails: doplasma::@6_12 blocks: doplasma::@6_12 Successful SSA optimization Pass2LoopUnroll @@ -1818,7 +1825,7 @@ Constant (const byte*) doplasma::$43 = doplasma::screen#0+doplasma::$42 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#24) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [62] if((const byte) doplasma::ii#26<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_13 +if() condition always true - replacing block destination [63] if((const byte) doplasma::ii#26<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_13 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_13 tails: doplasma::@6_13 blocks: doplasma::@6_13 Successful SSA optimization Pass2LoopUnroll @@ -1831,7 +1838,7 @@ Constant (const byte*) doplasma::$46 = doplasma::screen#0+doplasma::$45 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#26) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [64] if((const byte) doplasma::ii#28<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_14 +if() condition always true - replacing block destination [65] if((const byte) doplasma::ii#28<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_14 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_14 tails: doplasma::@6_14 blocks: doplasma::@6_14 Successful SSA optimization Pass2LoopUnroll @@ -1844,7 +1851,7 @@ Constant (const byte*) doplasma::$49 = doplasma::screen#0+doplasma::$48 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#28) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [66] if((const byte) doplasma::ii#30<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_15 +if() condition always true - replacing block destination [67] if((const byte) doplasma::ii#30<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_15 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_15 tails: doplasma::@6_15 blocks: doplasma::@6_15 Successful SSA optimization Pass2LoopUnroll @@ -1857,7 +1864,7 @@ Constant (const byte*) doplasma::$52 = doplasma::screen#0+doplasma::$51 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#30) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [68] if((const byte) doplasma::ii#32<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_16 +if() condition always true - replacing block destination [69] if((const byte) doplasma::ii#32<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_16 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_16 tails: doplasma::@6_16 blocks: doplasma::@6_16 Successful SSA optimization Pass2LoopUnroll @@ -1870,7 +1877,7 @@ Constant (const byte*) doplasma::$55 = doplasma::screen#0+doplasma::$54 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#32) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [70] if((const byte) doplasma::ii#34<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_17 +if() condition always true - replacing block destination [71] if((const byte) doplasma::ii#34<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_17 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_17 tails: doplasma::@6_17 blocks: doplasma::@6_17 Successful SSA optimization Pass2LoopUnroll @@ -1883,7 +1890,7 @@ Constant (const byte*) doplasma::$58 = doplasma::screen#0+doplasma::$57 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#34) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [72] if((const byte) doplasma::ii#36<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_18 +if() condition always true - replacing block destination [73] if((const byte) doplasma::ii#36<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_18 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_18 tails: doplasma::@6_18 blocks: doplasma::@6_18 Successful SSA optimization Pass2LoopUnroll @@ -1896,7 +1903,7 @@ Constant (const byte*) doplasma::$61 = doplasma::screen#0+doplasma::$60 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#36) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [74] if((const byte) doplasma::ii#38<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_19 +if() condition always true - replacing block destination [75] if((const byte) doplasma::ii#38<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_19 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_19 tails: doplasma::@6_19 blocks: doplasma::@6_19 Successful SSA optimization Pass2LoopUnroll @@ -1909,7 +1916,7 @@ Constant (const byte*) doplasma::$64 = doplasma::screen#0+doplasma::$63 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#38) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [76] if((const byte) doplasma::ii#40<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_20 +if() condition always true - replacing block destination [77] if((const byte) doplasma::ii#40<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_20 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_20 tails: doplasma::@6_20 blocks: doplasma::@6_20 Successful SSA optimization Pass2LoopUnroll @@ -1922,7 +1929,7 @@ Constant (const byte*) doplasma::$67 = doplasma::screen#0+doplasma::$66 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#40) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [78] if((const byte) doplasma::ii#42<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_21 +if() condition always true - replacing block destination [79] if((const byte) doplasma::ii#42<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_21 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_21 tails: doplasma::@6_21 blocks: doplasma::@6_21 Successful SSA optimization Pass2LoopUnroll @@ -1935,7 +1942,7 @@ Constant (const byte*) doplasma::$70 = doplasma::screen#0+doplasma::$69 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#42) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [80] if((const byte) doplasma::ii#44<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_22 +if() condition always true - replacing block destination [81] if((const byte) doplasma::ii#44<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_22 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_22 tails: doplasma::@6_22 blocks: doplasma::@6_22 Successful SSA optimization Pass2LoopUnroll @@ -1948,7 +1955,7 @@ Constant (const byte*) doplasma::$73 = doplasma::screen#0+doplasma::$72 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#44) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [82] if((const byte) doplasma::ii#46<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_23 +if() condition always true - replacing block destination [83] if((const byte) doplasma::ii#46<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_23 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_23 tails: doplasma::@6_23 blocks: doplasma::@6_23 Successful SSA optimization Pass2LoopUnroll @@ -1961,7 +1968,7 @@ Constant (const byte*) doplasma::$76 = doplasma::screen#0+doplasma::$75 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#46) Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [84] if((const byte) doplasma::ii#48<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_24 +if() condition always true - replacing block destination [85] if((const byte) doplasma::ii#48<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_24 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: doplasma::@6_24 tails: doplasma::@6_24 blocks: doplasma::@6_24 Successful SSA optimization Pass2LoopUnroll @@ -1975,7 +1982,7 @@ Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(doplasma::ybuf#0+doplasma::ii#48) Successful SSA optimization Pass2ConstantAdditionElimination Removing PHI-reference to removed block (doplasma::@6_24) in block doplasma::@6_25 -if() condition always false - eliminating [86] if((const byte) doplasma::ii#50<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_25 +if() condition always false - eliminating [87] if((const byte) doplasma::ii#50<(byte/signed byte/word/signed word/dword/signed dword) $19) goto doplasma::@6_25 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte) doplasma::ii#51 from unused block doplasma::@6_25 @@ -2225,7 +2232,7 @@ Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:3 Calls in [main] to makecharset:13 doplasma:18 -Calls in [makecharset] to sid_rnd_init:112 print_cls:114 sid_rnd:120 print_char:138 +Calls in [makecharset] to sid_rnd_init:113 print_cls:115 sid_rnd:121 print_char:139 Created 20 initial phi equivalence classes Coalesced [19] c1A#28 ← c1A#3 @@ -2237,23 +2244,23 @@ Coalesced [26] doplasma::c1a#3 ← doplasma::c1a#0 Coalesced [27] doplasma::c1b#3 ← doplasma::c1b#0 Coalesced [39] doplasma::c2a#3 ← doplasma::c2a#0 Coalesced [40] doplasma::c2b#3 ← doplasma::c2b#0 -Coalesced [104] doplasma::i2#5 ← doplasma::i2#1 -Coalesced [105] doplasma::c2a#4 ← doplasma::c2a#1 -Coalesced [106] doplasma::c2b#4 ← doplasma::c2b#1 -Coalesced [107] doplasma::i1#3 ← doplasma::i1#1 -Coalesced [108] doplasma::c1a#4 ← doplasma::c1a#1 -Coalesced [109] doplasma::c1b#4 ← doplasma::c1b#1 -Coalesced [110] doplasma::i#3 ← doplasma::i#1 -Coalesced [126] makecharset::b#9 ← makecharset::b#1 -Coalesced [139] print_char_cursor#47 ← print_char_cursor#1 -Coalesced [144] makecharset::c#13 ← makecharset::c#1 -Coalesced [145] print_char_cursor#46 ← print_char_cursor#18 -Coalesced (already) [146] print_char_cursor#48 ← print_char_cursor#45 -Coalesced [147] makecharset::i#8 ← makecharset::i#1 -Coalesced [148] makecharset::ii#6 ← makecharset::ii#1 -Coalesced [149] makecharset::b#7 ← makecharset::b#3 -Coalesced (already) [150] makecharset::b#8 ← makecharset::b#2 -Coalesced [162] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [105] doplasma::i2#5 ← doplasma::i2#1 +Coalesced [106] doplasma::c2a#4 ← doplasma::c2a#1 +Coalesced [107] doplasma::c2b#4 ← doplasma::c2b#1 +Coalesced [108] doplasma::i1#3 ← doplasma::i1#1 +Coalesced [109] doplasma::c1a#4 ← doplasma::c1a#1 +Coalesced [110] doplasma::c1b#4 ← doplasma::c1b#1 +Coalesced [111] doplasma::i#3 ← doplasma::i#1 +Coalesced [127] makecharset::b#9 ← makecharset::b#1 +Coalesced [140] print_char_cursor#47 ← print_char_cursor#1 +Coalesced [145] makecharset::c#13 ← makecharset::c#1 +Coalesced [146] print_char_cursor#46 ← print_char_cursor#18 +Coalesced (already) [147] print_char_cursor#48 ← print_char_cursor#45 +Coalesced [148] makecharset::i#8 ← makecharset::i#1 +Coalesced [149] makecharset::ii#6 ← makecharset::ii#1 +Coalesced [150] makecharset::b#7 ← makecharset::b#3 +Coalesced (already) [151] makecharset::b#8 ← makecharset::b#2 +Coalesced [163] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 18 phi equivalence classes Culled Empty Block (label) main::@12 Culled Empty Block (label) doplasma::@11 @@ -2364,205 +2371,206 @@ doplasma::@4: scope:[doplasma] from doplasma::@3 [40] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 to:doplasma::@5 doplasma::@5: scope:[doplasma] from doplasma::@4 doplasma::@7 - [41] (byte) doplasma::i2#4 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) + [41] (byte) doplasma::i2#2 ← phi( doplasma::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 doplasma::@7/(byte) doplasma::i2#1 ) + [42] (byte) doplasma::xval#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) to:doplasma::@6 doplasma::@6: scope:[doplasma] from doplasma::@5 - [42] (byte~) doplasma::$6 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0) - [43] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#4) ← (byte~) doplasma::$6 + [43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0) + [44] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6 to:doplasma::@6_1 doplasma::@6_1: scope:[doplasma] from doplasma::@6 - [44] (byte~) doplasma::$11 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) - [45] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$11 + [45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) + [46] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$11 to:doplasma::@6_2 doplasma::@6_2: scope:[doplasma] from doplasma::@6_1 - [46] (byte~) doplasma::$14 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) - [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$14 + [47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) + [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$14 to:doplasma::@6_3 doplasma::@6_3: scope:[doplasma] from doplasma::@6_2 - [48] (byte~) doplasma::$17 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) - [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$17 + [49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) + [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$17 to:doplasma::@6_4 doplasma::@6_4: scope:[doplasma] from doplasma::@6_3 - [50] (byte~) doplasma::$20 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) - [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$20 + [51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) + [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$20 to:doplasma::@6_5 doplasma::@6_5: scope:[doplasma] from doplasma::@6_4 - [52] (byte~) doplasma::$23 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) - [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$23 + [53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) + [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$23 to:doplasma::@6_6 doplasma::@6_6: scope:[doplasma] from doplasma::@6_5 - [54] (byte~) doplasma::$26 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) - [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$26 + [55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) + [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$26 to:doplasma::@6_7 doplasma::@6_7: scope:[doplasma] from doplasma::@6_6 - [56] (byte~) doplasma::$29 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) - [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$29 + [57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) + [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$29 to:doplasma::@6_8 doplasma::@6_8: scope:[doplasma] from doplasma::@6_7 - [58] (byte~) doplasma::$32 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) - [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$32 + [59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) + [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$32 to:doplasma::@6_9 doplasma::@6_9: scope:[doplasma] from doplasma::@6_8 - [60] (byte~) doplasma::$35 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) - [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$35 + [61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) + [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$35 to:doplasma::@6_10 doplasma::@6_10: scope:[doplasma] from doplasma::@6_9 - [62] (byte~) doplasma::$38 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) - [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$38 + [63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) + [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$38 to:doplasma::@6_11 doplasma::@6_11: scope:[doplasma] from doplasma::@6_10 - [64] (byte~) doplasma::$41 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) - [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$41 + [65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) + [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$41 to:doplasma::@6_12 doplasma::@6_12: scope:[doplasma] from doplasma::@6_11 - [66] (byte~) doplasma::$44 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) - [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$44 + [67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) + [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$44 to:doplasma::@6_13 doplasma::@6_13: scope:[doplasma] from doplasma::@6_12 - [68] (byte~) doplasma::$47 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) - [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$47 + [69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) + [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$47 to:doplasma::@6_14 doplasma::@6_14: scope:[doplasma] from doplasma::@6_13 - [70] (byte~) doplasma::$50 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) - [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$50 + [71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) + [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$50 to:doplasma::@6_15 doplasma::@6_15: scope:[doplasma] from doplasma::@6_14 - [72] (byte~) doplasma::$53 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) - [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$53 + [73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) + [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$53 to:doplasma::@6_16 doplasma::@6_16: scope:[doplasma] from doplasma::@6_15 - [74] (byte~) doplasma::$56 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) - [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$56 + [75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) + [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$56 to:doplasma::@6_17 doplasma::@6_17: scope:[doplasma] from doplasma::@6_16 - [76] (byte~) doplasma::$59 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) - [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$59 + [77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) + [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$59 to:doplasma::@6_18 doplasma::@6_18: scope:[doplasma] from doplasma::@6_17 - [78] (byte~) doplasma::$62 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) - [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$62 + [79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) + [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$62 to:doplasma::@6_19 doplasma::@6_19: scope:[doplasma] from doplasma::@6_18 - [80] (byte~) doplasma::$65 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) - [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$65 + [81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) + [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$65 to:doplasma::@6_20 doplasma::@6_20: scope:[doplasma] from doplasma::@6_19 - [82] (byte~) doplasma::$68 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) - [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$68 + [83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) + [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$68 to:doplasma::@6_21 doplasma::@6_21: scope:[doplasma] from doplasma::@6_20 - [84] (byte~) doplasma::$71 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) - [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$71 + [85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) + [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$71 to:doplasma::@6_22 doplasma::@6_22: scope:[doplasma] from doplasma::@6_21 - [86] (byte~) doplasma::$74 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) - [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$74 + [87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) + [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$74 to:doplasma::@6_23 doplasma::@6_23: scope:[doplasma] from doplasma::@6_22 - [88] (byte~) doplasma::$77 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) - [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$77 + [89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) + [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$77 to:doplasma::@6_24 doplasma::@6_24: scope:[doplasma] from doplasma::@6_23 - [90] (byte~) doplasma::$80 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) - [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$80 + [91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) + [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$80 to:doplasma::@7 doplasma::@7: scope:[doplasma] from doplasma::@6_24 - [92] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#4 - [93] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 + [93] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 + [94] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 to:doplasma::@return doplasma::@return: scope:[doplasma] from doplasma::@7 - [94] return + [95] return to:@return makecharset: scope:[makecharset] from main::@2 - [95] phi() - [96] call sid_rnd_init + [96] phi() + [97] call sid_rnd_init to:makecharset::@10 makecharset::@10: scope:[makecharset] from makecharset - [97] phi() - [98] call print_cls + [98] phi() + [99] call print_cls to:makecharset::@1 makecharset::@1: scope:[makecharset] from makecharset::@10 makecharset::@9 - [99] (byte*) print_char_cursor#45 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 ) - [99] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 ) - [100] (byte~) makecharset::$2 ← < (word) makecharset::c#2 - [101] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) + [100] (byte*) print_char_cursor#45 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 ) + [100] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 ) + [101] (byte~) makecharset::$2 ← < (word) makecharset::c#2 + [102] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) to:makecharset::@2 makecharset::@2: scope:[makecharset] from makecharset::@1 makecharset::@6 - [102] (byte) makecharset::i#7 ← phi( makecharset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@6/(byte) makecharset::i#1 ) + [103] (byte) makecharset::i#7 ← phi( makecharset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@6/(byte) makecharset::i#1 ) to:makecharset::@3 makecharset::@3: scope:[makecharset] from makecharset::@2 makecharset::@4 - [103] (byte) makecharset::b#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::b#3 ) - [103] (byte) makecharset::ii#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::ii#1 ) - [104] call sid_rnd - [105] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + [104] (byte) makecharset::b#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::b#3 ) + [104] (byte) makecharset::ii#2 ← phi( makecharset::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@4/(byte) makecharset::ii#1 ) + [105] call sid_rnd + [106] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 to:makecharset::@11 makecharset::@11: scope:[makecharset] from makecharset::@3 - [106] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 - [107] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff - [108] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 + [107] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 + [108] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff + [109] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 to:makecharset::@5 makecharset::@5: scope:[makecharset] from makecharset::@11 - [109] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) + [110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) to:makecharset::@4 makecharset::@4: scope:[makecharset] from makecharset::@11 makecharset::@5 - [110] (byte) makecharset::b#3 ← phi( makecharset::@11/(byte) makecharset::b#2 makecharset::@5/(byte) makecharset::b#1 ) - [111] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 - [112] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 + [111] (byte) makecharset::b#3 ← phi( makecharset::@11/(byte) makecharset::b#2 makecharset::@5/(byte) makecharset::b#1 ) + [112] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 + [113] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 to:makecharset::@6 makecharset::@6: scope:[makecharset] from makecharset::@4 - [113] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [114] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 - [115] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 - [116] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 - [117] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 + [114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 + [116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 + [117] (byte) makecharset::i#1 ← ++ (byte) makecharset::i#7 + [118] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@2 to:makecharset::@7 makecharset::@7: scope:[makecharset] from makecharset::@6 - [118] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [119] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 + [119] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [120] if((byte/word~) makecharset::$11!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto makecharset::@9 to:makecharset::@8 makecharset::@8: scope:[makecharset] from makecharset::@7 - [120] phi() - [121] call print_char + [121] phi() + [122] call print_char to:makecharset::@9 makecharset::@9: scope:[makecharset] from makecharset::@7 makecharset::@8 - [122] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#45 ) - [123] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 - [124] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 + [123] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#45 ) + [124] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 + [125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 to:makecharset::@return makecharset::@return: scope:[makecharset] from makecharset::@9 - [125] return + [126] return to:@return print_char: scope:[print_char] from makecharset::@8 - [126] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 - [127] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 + [127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 + [128] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [128] return + [129] return to:@return sid_rnd: scope:[sid_rnd] from makecharset::@3 - [129] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) + [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) to:sid_rnd::@return sid_rnd::@return: scope:[sid_rnd] from sid_rnd - [130] return + [131] return to:@return print_cls: scope:[print_cls] from makecharset::@10 - [131] phi() + [132] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [132] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) - [133] *((byte*) print_cls::sc#2) ← (byte) ' ' - [134] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [135] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 + [133] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [134] *((byte*) print_cls::sc#2) ← (byte) ' ' + [135] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [136] return + [137] return to:@return sid_rnd_init: scope:[sid_rnd_init] from makecharset - [137] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff - [138] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 + [138] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff + [139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 to:sid_rnd_init::@return sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init - [139] return + [140] return to:@return @@ -2664,16 +2672,16 @@ VARIABLE REGISTER WEIGHTS (byte) YELLOW (byte) c1A (byte) c1A#1 1.3636363636363638 -(byte) c1A#3 0.1911764705882353 +(byte) c1A#3 0.18840579710144925 (byte) c1B (byte) c1B#1 1.25 -(byte) c1B#3 0.19402985074626866 +(byte) c1B#3 0.1911764705882353 (byte) c2A (byte) c2A#1 0.6818181818181819 -(byte) c2A#3 0.22807017543859648 +(byte) c2A#3 0.22413793103448276 (byte) c2B (byte) c2B#1 0.6521739130434783 -(byte) c2B#3 0.23214285714285715 +(byte) c2B#3 0.22807017543859648 (void()) doplasma((byte*) doplasma::screen) (byte~) doplasma::$0 202.0 (byte~) doplasma::$11 202.0 @@ -2726,10 +2734,12 @@ VARIABLE REGISTER WEIGHTS (byte) doplasma::i1#2 60.599999999999994 (byte) doplasma::i2 (byte) doplasma::i2#1 151.5 -(byte) doplasma::i2#4 102.98039215686288 +(byte) doplasma::i2#2 54.3846153846154 (byte) doplasma::ii (byte*) doplasma::screen (byte[$28]) doplasma::xbuf +(byte) doplasma::xval +(byte) doplasma::xval#0 53.59183673469388 (byte[$19]) doplasma::ybuf (void()) main() (byte*) main::col @@ -2802,7 +2812,7 @@ Initial phi equivalence classes [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] [ doplasma::i1#2 doplasma::i1#1 ] -[ doplasma::i2#4 doplasma::i2#1 ] +[ doplasma::i2#2 doplasma::i2#1 ] [ makecharset::c#2 makecharset::c#1 ] [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] [ makecharset::i#7 makecharset::i#1 ] @@ -2811,6 +2821,7 @@ Initial phi equivalence classes [ print_cls::sc#2 print_cls::sc#1 ] Added variable doplasma::$0 to zero page equivalence class [ doplasma::$0 ] Added variable doplasma::$2 to zero page equivalence class [ doplasma::$2 ] +Added variable doplasma::xval#0 to zero page equivalence class [ doplasma::xval#0 ] Added variable doplasma::$6 to zero page equivalence class [ doplasma::$6 ] Added variable doplasma::$11 to zero page equivalence class [ doplasma::$11 ] Added variable doplasma::$14 to zero page equivalence class [ doplasma::$14 ] @@ -2857,7 +2868,7 @@ Complete equivalence classes [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] [ doplasma::i1#2 doplasma::i1#1 ] -[ doplasma::i2#4 doplasma::i2#1 ] +[ doplasma::i2#2 doplasma::i2#1 ] [ makecharset::c#2 makecharset::c#1 ] [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] [ makecharset::i#7 makecharset::i#1 ] @@ -2866,6 +2877,7 @@ Complete equivalence classes [ print_cls::sc#2 print_cls::sc#1 ] [ doplasma::$0 ] [ doplasma::$2 ] +[ doplasma::xval#0 ] [ doplasma::$6 ] [ doplasma::$11 ] [ doplasma::$14 ] @@ -2911,7 +2923,7 @@ Allocated zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] Allocated zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] Allocated zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] Allocated zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] -Allocated zp ZP_BYTE:14 [ doplasma::i2#4 doplasma::i2#1 ] +Allocated zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] Allocated zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] Allocated zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] Allocated zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] @@ -2920,40 +2932,41 @@ Allocated zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] Allocated zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_BYTE:24 [ doplasma::$0 ] Allocated zp ZP_BYTE:25 [ doplasma::$2 ] -Allocated zp ZP_BYTE:26 [ doplasma::$6 ] -Allocated zp ZP_BYTE:27 [ doplasma::$11 ] -Allocated zp ZP_BYTE:28 [ doplasma::$14 ] -Allocated zp ZP_BYTE:29 [ doplasma::$17 ] -Allocated zp ZP_BYTE:30 [ doplasma::$20 ] -Allocated zp ZP_BYTE:31 [ doplasma::$23 ] -Allocated zp ZP_BYTE:32 [ doplasma::$26 ] -Allocated zp ZP_BYTE:33 [ doplasma::$29 ] -Allocated zp ZP_BYTE:34 [ doplasma::$32 ] -Allocated zp ZP_BYTE:35 [ doplasma::$35 ] -Allocated zp ZP_BYTE:36 [ doplasma::$38 ] -Allocated zp ZP_BYTE:37 [ doplasma::$41 ] -Allocated zp ZP_BYTE:38 [ doplasma::$44 ] -Allocated zp ZP_BYTE:39 [ doplasma::$47 ] -Allocated zp ZP_BYTE:40 [ doplasma::$50 ] -Allocated zp ZP_BYTE:41 [ doplasma::$53 ] -Allocated zp ZP_BYTE:42 [ doplasma::$56 ] -Allocated zp ZP_BYTE:43 [ doplasma::$59 ] -Allocated zp ZP_BYTE:44 [ doplasma::$62 ] -Allocated zp ZP_BYTE:45 [ doplasma::$65 ] -Allocated zp ZP_BYTE:46 [ doplasma::$68 ] -Allocated zp ZP_BYTE:47 [ doplasma::$71 ] -Allocated zp ZP_BYTE:48 [ doplasma::$74 ] -Allocated zp ZP_BYTE:49 [ doplasma::$77 ] -Allocated zp ZP_BYTE:50 [ doplasma::$80 ] -Allocated zp ZP_BYTE:51 [ makecharset::$2 ] -Allocated zp ZP_BYTE:52 [ makecharset::s#0 ] -Allocated zp ZP_BYTE:53 [ sid_rnd::return#2 ] -Allocated zp ZP_BYTE:54 [ makecharset::$3 ] -Allocated zp ZP_BYTE:55 [ makecharset::$4 ] -Allocated zp ZP_WORD:56 [ makecharset::$8 ] -Allocated zp ZP_WORD:58 [ makecharset::$9 ] -Allocated zp ZP_BYTE:60 [ makecharset::$11 ] -Allocated zp ZP_BYTE:61 [ sid_rnd::return#0 ] +Allocated zp ZP_BYTE:26 [ doplasma::xval#0 ] +Allocated zp ZP_BYTE:27 [ doplasma::$6 ] +Allocated zp ZP_BYTE:28 [ doplasma::$11 ] +Allocated zp ZP_BYTE:29 [ doplasma::$14 ] +Allocated zp ZP_BYTE:30 [ doplasma::$17 ] +Allocated zp ZP_BYTE:31 [ doplasma::$20 ] +Allocated zp ZP_BYTE:32 [ doplasma::$23 ] +Allocated zp ZP_BYTE:33 [ doplasma::$26 ] +Allocated zp ZP_BYTE:34 [ doplasma::$29 ] +Allocated zp ZP_BYTE:35 [ doplasma::$32 ] +Allocated zp ZP_BYTE:36 [ doplasma::$35 ] +Allocated zp ZP_BYTE:37 [ doplasma::$38 ] +Allocated zp ZP_BYTE:38 [ doplasma::$41 ] +Allocated zp ZP_BYTE:39 [ doplasma::$44 ] +Allocated zp ZP_BYTE:40 [ doplasma::$47 ] +Allocated zp ZP_BYTE:41 [ doplasma::$50 ] +Allocated zp ZP_BYTE:42 [ doplasma::$53 ] +Allocated zp ZP_BYTE:43 [ doplasma::$56 ] +Allocated zp ZP_BYTE:44 [ doplasma::$59 ] +Allocated zp ZP_BYTE:45 [ doplasma::$62 ] +Allocated zp ZP_BYTE:46 [ doplasma::$65 ] +Allocated zp ZP_BYTE:47 [ doplasma::$68 ] +Allocated zp ZP_BYTE:48 [ doplasma::$71 ] +Allocated zp ZP_BYTE:49 [ doplasma::$74 ] +Allocated zp ZP_BYTE:50 [ doplasma::$77 ] +Allocated zp ZP_BYTE:51 [ doplasma::$80 ] +Allocated zp ZP_BYTE:52 [ makecharset::$2 ] +Allocated zp ZP_BYTE:53 [ makecharset::s#0 ] +Allocated zp ZP_BYTE:54 [ sid_rnd::return#2 ] +Allocated zp ZP_BYTE:55 [ makecharset::$3 ] +Allocated zp ZP_BYTE:56 [ makecharset::$4 ] +Allocated zp ZP_WORD:57 [ makecharset::$8 ] +Allocated zp ZP_WORD:59 [ makecharset::$9 ] +Allocated zp ZP_BYTE:61 [ makecharset::$11 ] +Allocated zp ZP_BYTE:62 [ sid_rnd::return#0 ] INITIAL ASM //SEG0 File Comments @@ -3056,7 +3069,7 @@ main: { //SEG24 main::@2 b2: //SEG25 [13] call makecharset - //SEG26 [95] phi from main::@2 to makecharset [phi:main::@2->makecharset] + //SEG26 [96] phi from main::@2 to makecharset [phi:main::@2->makecharset] makecharset_from_b2: jsr makecharset //SEG27 [14] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] @@ -3107,38 +3120,39 @@ main: { doplasma: { .label _0 = $18 .label _2 = $19 - .label _6 = $1a + .label _6 = $1b .label c1a = 8 .label c1b = 9 .label i = $a .label c2a = $b .label c2b = $c .label i1 = $d + .label xval = $1a .label i2 = $e - .label _11 = $1b - .label _14 = $1c - .label _17 = $1d - .label _20 = $1e - .label _23 = $1f - .label _26 = $20 - .label _29 = $21 - .label _32 = $22 - .label _35 = $23 - .label _38 = $24 - .label _41 = $25 - .label _44 = $26 - .label _47 = $27 - .label _50 = $28 - .label _53 = $29 - .label _56 = $2a - .label _59 = $2b - .label _62 = $2c - .label _65 = $2d - .label _68 = $2e - .label _71 = $2f - .label _74 = $30 - .label _77 = $31 - .label _80 = $32 + .label _11 = $1c + .label _14 = $1d + .label _17 = $1e + .label _20 = $1f + .label _23 = $20 + .label _26 = $21 + .label _29 = $22 + .label _32 = $23 + .label _35 = $24 + .label _38 = $25 + .label _41 = $26 + .label _44 = $27 + .label _47 = $28 + .label _50 = $29 + .label _53 = $2a + .label _56 = $2b + .label _59 = $2c + .label _62 = $2d + .label _65 = $2e + .label _68 = $2f + .label _71 = $30 + .label _74 = $31 + .label _77 = $32 + .label _80 = $33 //SEG46 [19] (byte) doplasma::c1a#0 ← (byte) c1A#1 -- vbuz1=vbuz2 lda c1A sta c1a @@ -3258,482 +3272,462 @@ doplasma: { stx c2B //SEG86 [41] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] b5_from_b4: - //SEG87 [41] phi (byte) doplasma::i2#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuz1=vbuc1 + //SEG87 [41] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuz1=vbuc1 lda #0 sta i2 jmp b5 //SEG88 [41] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] b5_from_b7: - //SEG89 [41] phi (byte) doplasma::i2#4 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy + //SEG89 [41] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy jmp b5 //SEG90 doplasma::@5 b5: - jmp b6 - //SEG91 doplasma::@6 - b6: - //SEG92 [42] (byte~) doplasma::$6 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 + //SEG91 [42] (byte) doplasma::xval#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i2 lda xbuf,y + sta xval + jmp b6 + // Use experimental loop unrolling to increase the speed + //SEG92 doplasma::@6 + b6: + //SEG93 [43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf clc - adc ybuf + adc xval sta _6 - //SEG93 [43] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#4) ← (byte~) doplasma::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG94 [44] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy i2 sta SCREEN1,y jmp b6_1 - //SEG94 doplasma::@6_1 + //SEG95 doplasma::@6_1 b6_1: - //SEG95 [44] (byte~) doplasma::$11 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG96 [45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+1 clc - adc ybuf+1 + adc xval sta _11 - //SEG96 [45] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG97 [46] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$11 -- pbuc1_derefidx_vbuz1=vbuz2 lda _11 ldy i2 sta SCREEN1+1*$28,y jmp b6_2 - //SEG97 doplasma::@6_2 + //SEG98 doplasma::@6_2 b6_2: - //SEG98 [46] (byte~) doplasma::$14 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG99 [47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+2 clc - adc ybuf+2 + adc xval sta _14 - //SEG99 [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$14 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG100 [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$14 -- pbuc1_derefidx_vbuz1=vbuz2 lda _14 ldy i2 sta SCREEN1+2*$28,y jmp b6_3 - //SEG100 doplasma::@6_3 + //SEG101 doplasma::@6_3 b6_3: - //SEG101 [48] (byte~) doplasma::$17 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG102 [49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+3 clc - adc ybuf+3 + adc xval sta _17 - //SEG102 [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$17 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG103 [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$17 -- pbuc1_derefidx_vbuz1=vbuz2 lda _17 ldy i2 sta SCREEN1+3*$28,y jmp b6_4 - //SEG103 doplasma::@6_4 + //SEG104 doplasma::@6_4 b6_4: - //SEG104 [50] (byte~) doplasma::$20 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG105 [51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+4 clc - adc ybuf+4 + adc xval sta _20 - //SEG105 [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$20 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG106 [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$20 -- pbuc1_derefidx_vbuz1=vbuz2 lda _20 ldy i2 sta SCREEN1+4*$28,y jmp b6_5 - //SEG106 doplasma::@6_5 + //SEG107 doplasma::@6_5 b6_5: - //SEG107 [52] (byte~) doplasma::$23 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG108 [53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+5 clc - adc ybuf+5 + adc xval sta _23 - //SEG108 [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$23 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG109 [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$23 -- pbuc1_derefidx_vbuz1=vbuz2 lda _23 ldy i2 sta SCREEN1+5*$28,y jmp b6_6 - //SEG109 doplasma::@6_6 + //SEG110 doplasma::@6_6 b6_6: - //SEG110 [54] (byte~) doplasma::$26 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG111 [55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+6 clc - adc ybuf+6 + adc xval sta _26 - //SEG111 [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$26 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG112 [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$26 -- pbuc1_derefidx_vbuz1=vbuz2 lda _26 ldy i2 sta SCREEN1+6*$28,y jmp b6_7 - //SEG112 doplasma::@6_7 + //SEG113 doplasma::@6_7 b6_7: - //SEG113 [56] (byte~) doplasma::$29 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG114 [57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+7 clc - adc ybuf+7 + adc xval sta _29 - //SEG114 [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$29 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG115 [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$29 -- pbuc1_derefidx_vbuz1=vbuz2 lda _29 ldy i2 sta SCREEN1+7*$28,y jmp b6_8 - //SEG115 doplasma::@6_8 + //SEG116 doplasma::@6_8 b6_8: - //SEG116 [58] (byte~) doplasma::$32 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG117 [59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+8 clc - adc ybuf+8 + adc xval sta _32 - //SEG117 [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$32 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG118 [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$32 -- pbuc1_derefidx_vbuz1=vbuz2 lda _32 ldy i2 sta SCREEN1+8*$28,y jmp b6_9 - //SEG118 doplasma::@6_9 + //SEG119 doplasma::@6_9 b6_9: - //SEG119 [60] (byte~) doplasma::$35 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG120 [61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+9 clc - adc ybuf+9 + adc xval sta _35 - //SEG120 [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$35 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG121 [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$35 -- pbuc1_derefidx_vbuz1=vbuz2 lda _35 ldy i2 sta SCREEN1+9*$28,y jmp b6_10 - //SEG121 doplasma::@6_10 + //SEG122 doplasma::@6_10 b6_10: - //SEG122 [62] (byte~) doplasma::$38 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG123 [63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$a clc - adc ybuf+$a + adc xval sta _38 - //SEG123 [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$38 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG124 [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$38 -- pbuc1_derefidx_vbuz1=vbuz2 lda _38 ldy i2 sta SCREEN1+$a*$28,y jmp b6_11 - //SEG124 doplasma::@6_11 + //SEG125 doplasma::@6_11 b6_11: - //SEG125 [64] (byte~) doplasma::$41 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG126 [65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$b clc - adc ybuf+$b + adc xval sta _41 - //SEG126 [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$41 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG127 [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$41 -- pbuc1_derefidx_vbuz1=vbuz2 lda _41 ldy i2 sta SCREEN1+$b*$28,y jmp b6_12 - //SEG127 doplasma::@6_12 + //SEG128 doplasma::@6_12 b6_12: - //SEG128 [66] (byte~) doplasma::$44 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG129 [67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$c clc - adc ybuf+$c + adc xval sta _44 - //SEG129 [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$44 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG130 [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$44 -- pbuc1_derefidx_vbuz1=vbuz2 lda _44 ldy i2 sta SCREEN1+$c*$28,y jmp b6_13 - //SEG130 doplasma::@6_13 + //SEG131 doplasma::@6_13 b6_13: - //SEG131 [68] (byte~) doplasma::$47 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG132 [69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$d clc - adc ybuf+$d + adc xval sta _47 - //SEG132 [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$47 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG133 [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$47 -- pbuc1_derefidx_vbuz1=vbuz2 lda _47 ldy i2 sta SCREEN1+$d*$28,y jmp b6_14 - //SEG133 doplasma::@6_14 + //SEG134 doplasma::@6_14 b6_14: - //SEG134 [70] (byte~) doplasma::$50 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG135 [71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$e clc - adc ybuf+$e + adc xval sta _50 - //SEG135 [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$50 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG136 [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$50 -- pbuc1_derefidx_vbuz1=vbuz2 lda _50 ldy i2 sta SCREEN1+$e*$28,y jmp b6_15 - //SEG136 doplasma::@6_15 + //SEG137 doplasma::@6_15 b6_15: - //SEG137 [72] (byte~) doplasma::$53 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG138 [73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$f clc - adc ybuf+$f + adc xval sta _53 - //SEG138 [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$53 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG139 [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$53 -- pbuc1_derefidx_vbuz1=vbuz2 lda _53 ldy i2 sta SCREEN1+$f*$28,y jmp b6_16 - //SEG139 doplasma::@6_16 + //SEG140 doplasma::@6_16 b6_16: - //SEG140 [74] (byte~) doplasma::$56 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG141 [75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$10 clc - adc ybuf+$10 + adc xval sta _56 - //SEG141 [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$56 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG142 [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$56 -- pbuc1_derefidx_vbuz1=vbuz2 lda _56 ldy i2 sta SCREEN1+$10*$28,y jmp b6_17 - //SEG142 doplasma::@6_17 + //SEG143 doplasma::@6_17 b6_17: - //SEG143 [76] (byte~) doplasma::$59 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG144 [77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$11 clc - adc ybuf+$11 + adc xval sta _59 - //SEG144 [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$59 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG145 [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$59 -- pbuc1_derefidx_vbuz1=vbuz2 lda _59 ldy i2 sta SCREEN1+$11*$28,y jmp b6_18 - //SEG145 doplasma::@6_18 + //SEG146 doplasma::@6_18 b6_18: - //SEG146 [78] (byte~) doplasma::$62 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG147 [79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$12 clc - adc ybuf+$12 + adc xval sta _62 - //SEG147 [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$62 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG148 [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$62 -- pbuc1_derefidx_vbuz1=vbuz2 lda _62 ldy i2 sta SCREEN1+$12*$28,y jmp b6_19 - //SEG148 doplasma::@6_19 + //SEG149 doplasma::@6_19 b6_19: - //SEG149 [80] (byte~) doplasma::$65 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG150 [81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$13 clc - adc ybuf+$13 + adc xval sta _65 - //SEG150 [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$65 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG151 [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$65 -- pbuc1_derefidx_vbuz1=vbuz2 lda _65 ldy i2 sta SCREEN1+$13*$28,y jmp b6_20 - //SEG151 doplasma::@6_20 + //SEG152 doplasma::@6_20 b6_20: - //SEG152 [82] (byte~) doplasma::$68 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG153 [83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$14 clc - adc ybuf+$14 + adc xval sta _68 - //SEG153 [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$68 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG154 [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$68 -- pbuc1_derefidx_vbuz1=vbuz2 lda _68 ldy i2 sta SCREEN1+$14*$28,y jmp b6_21 - //SEG154 doplasma::@6_21 + //SEG155 doplasma::@6_21 b6_21: - //SEG155 [84] (byte~) doplasma::$71 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG156 [85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$15 clc - adc ybuf+$15 + adc xval sta _71 - //SEG156 [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$71 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG157 [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$71 -- pbuc1_derefidx_vbuz1=vbuz2 lda _71 ldy i2 sta SCREEN1+$15*$28,y jmp b6_22 - //SEG157 doplasma::@6_22 + //SEG158 doplasma::@6_22 b6_22: - //SEG158 [86] (byte~) doplasma::$74 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG159 [87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$16 clc - adc ybuf+$16 + adc xval sta _74 - //SEG159 [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$74 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG160 [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$74 -- pbuc1_derefidx_vbuz1=vbuz2 lda _74 ldy i2 sta SCREEN1+$16*$28,y jmp b6_23 - //SEG160 doplasma::@6_23 + //SEG161 doplasma::@6_23 b6_23: - //SEG161 [88] (byte~) doplasma::$77 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG162 [89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$17 clc - adc ybuf+$17 + adc xval sta _77 - //SEG162 [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$77 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG163 [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$77 -- pbuc1_derefidx_vbuz1=vbuz2 lda _77 ldy i2 sta SCREEN1+$17*$28,y jmp b6_24 - //SEG163 doplasma::@6_24 + //SEG164 doplasma::@6_24 b6_24: - //SEG164 [90] (byte~) doplasma::$80 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuz1=pbuc1_derefidx_vbuz2_plus__deref_pbuc2 - ldy i2 - lda xbuf,y + //SEG165 [91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuz1=vbuz2_plus__deref_pbuc1 + lda ybuf+$18 clc - adc ybuf+$18 + adc xval sta _80 - //SEG165 [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$80 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG166 [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$80 -- pbuc1_derefidx_vbuz1=vbuz2 lda _80 ldy i2 sta SCREEN1+$18*$28,y jmp b7 - //SEG166 doplasma::@7 + //SEG167 doplasma::@7 b7: - //SEG167 [92] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#4 -- vbuz1=_inc_vbuz1 + //SEG168 [93] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuz1=_inc_vbuz1 inc i2 - //SEG168 [93] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 + //SEG169 [94] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuz1_lt_vbuc1_then_la1 lda i2 cmp #$28 bcc b5_from_b7 jmp breturn - //SEG169 doplasma::@return + //SEG170 doplasma::@return breturn: - //SEG170 [94] return + //SEG171 [95] return rts xbuf: .fill $28, 0 ybuf: .fill $19, 0 } -//SEG171 makecharset +//SEG172 makecharset // Make a plasma-friendly charset where the chars are randomly filled makecharset: { - .label _2 = $33 - .label _3 = $36 - .label _4 = $37 - .label _8 = $38 - .label _9 = $3a - .label _11 = $3c - .label s = $34 + .label _2 = $34 + .label _3 = $37 + .label _4 = $38 + .label _8 = $39 + .label _9 = $3b + .label _11 = $3d + .label s = $35 .label ii = $14 .label b = $15 .label i = $13 .label c = $f - //SEG172 [96] call sid_rnd_init + //SEG173 [97] call sid_rnd_init jsr sid_rnd_init - //SEG173 [97] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] + //SEG174 [98] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] b10_from_makecharset: jmp b10 - //SEG174 makecharset::@10 + //SEG175 makecharset::@10 b10: - //SEG175 [98] call print_cls - //SEG176 [131] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] + //SEG176 [99] call print_cls + //SEG177 [132] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] print_cls_from_b10: jsr print_cls - //SEG177 [99] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] + //SEG178 [100] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] b1_from_b10: - //SEG178 [99] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 + //SEG179 [100] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG179 [99] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 + //SEG180 [100] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 lda #0 sta c lda #0 sta c+1 jmp b1 - //SEG180 [99] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] + //SEG181 [100] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] b1_from_b9: - //SEG181 [99] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy - //SEG182 [99] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy + //SEG182 [100] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy + //SEG183 [100] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy jmp b1 - //SEG183 makecharset::@1 + //SEG184 makecharset::@1 b1: - //SEG184 [100] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuz1=_lo_vwuz2 + //SEG185 [101] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuz1=_lo_vwuz2 lda c sta _2 - //SEG185 [101] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG186 [102] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda SINTABLE,y sta s - //SEG186 [102] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] + //SEG187 [103] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] b2_from_b1: - //SEG187 [102] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 + //SEG188 [103] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG188 [102] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] + //SEG189 [103] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] b2_from_b6: - //SEG189 [102] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy + //SEG190 [103] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy jmp b2 - //SEG190 makecharset::@2 + //SEG191 makecharset::@2 b2: - //SEG191 [103] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] + //SEG192 [104] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] b3_from_b2: - //SEG192 [103] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 + //SEG193 [104] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuz1=vbuc1 lda #0 sta b - //SEG193 [103] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuz1=vbuc1 + //SEG194 [104] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuz1=vbuc1 lda #0 sta ii jmp b3 - //SEG194 [103] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] + //SEG195 [104] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] b3_from_b4: - //SEG195 [103] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy - //SEG196 [103] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy + //SEG196 [104] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy + //SEG197 [104] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy jmp b3 - //SEG197 makecharset::@3 + //SEG198 makecharset::@3 b3: - //SEG198 [104] call sid_rnd + //SEG199 [105] call sid_rnd jsr sid_rnd - //SEG199 [105] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + //SEG200 [106] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 lda sid_rnd.return sta sid_rnd.return_2 jmp b11 - //SEG200 makecharset::@11 + //SEG201 makecharset::@11 b11: - //SEG201 [106] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + //SEG202 [107] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _3 - //SEG202 [107] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuz2_band_vbuc1 + //SEG203 [108] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuz2_band_vbuc1 lda #$ff and _3 sta _4 - //SEG203 [108] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 + //SEG204 [109] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 lda s cmp _4 bcs b4_from_b11 jmp b5 - //SEG204 makecharset::@5 + //SEG205 makecharset::@5 b5: - //SEG205 [109] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG206 [110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2 lda b ldy ii ora bittab,y sta b - //SEG206 [110] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] + //SEG207 [111] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] b4_from_b11: b4_from_b5: - //SEG207 [110] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy + //SEG208 [111] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy jmp b4 - //SEG208 makecharset::@4 + //SEG209 makecharset::@4 b4: - //SEG209 [111] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuz1=_inc_vbuz1 + //SEG210 [112] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuz1=_inc_vbuz1 inc ii - //SEG210 [112] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG211 [113] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuz1_lt_vbuc1_then_la1 lda ii cmp #8 bcc b3_from_b4 jmp b6 - //SEG211 makecharset::@6 + //SEG212 makecharset::@6 b6: - //SEG212 [113] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG213 [114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda c asl sta _8 @@ -3744,7 +3738,7 @@ makecharset: { rol _8+1 asl _8 rol _8+1 - //SEG213 [114] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz2_plus_vbuz3 + //SEG214 [115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz2_plus_vbuz3 lda i clc adc _8 @@ -3752,7 +3746,7 @@ makecharset: { lda #0 adc _8+1 sta _9+1 - //SEG214 [115] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuz2 + //SEG215 [116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuz2 lda b sta !v++1 lda #makecharset::@8] + //SEG221 [121] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] b8_from_b7: jmp b8 - //SEG221 makecharset::@8 + //SEG222 makecharset::@8 b8: - //SEG222 [121] call print_char + //SEG223 [122] call print_char jsr print_char - //SEG223 [122] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] + //SEG224 [123] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] b9_from_b7: b9_from_b8: - //SEG224 [122] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy + //SEG225 [123] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy jmp b9 - //SEG225 makecharset::@9 + //SEG226 makecharset::@9 b9: - //SEG226 [123] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 + //SEG227 [124] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 inc c bne !+ inc c+1 !: - //SEG227 [124] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG228 [125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 lda c+1 cmp #>$100 bcc b1_from_b9 @@ -3812,74 +3806,74 @@ makecharset: { bcc b1_from_b9 !: jmp breturn - //SEG228 makecharset::@return + //SEG229 makecharset::@return breturn: - //SEG229 [125] return + //SEG230 [126] return rts bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80 } -//SEG230 print_char +//SEG231 print_char // Print a single char print_char: { .const ch = '.' - //SEG231 [126] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 + //SEG232 [127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (print_char_cursor),y - //SEG232 [127] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 + //SEG233 [128] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG233 print_char::@return + //SEG234 print_char::@return breturn: - //SEG234 [128] return + //SEG235 [129] return rts } -//SEG235 sid_rnd +//SEG236 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - .label return = $3d - .label return_2 = $35 - //SEG236 [129] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + .label return = $3e + .label return_2 = $36 + //SEG237 [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return jmp breturn - //SEG237 sid_rnd::@return + //SEG238 sid_rnd::@return breturn: - //SEG238 [130] return + //SEG239 [131] return rts } -//SEG239 print_cls +//SEG240 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $16 - //SEG240 [132] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG241 [133] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG241 [132] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG242 [133] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG242 [132] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG243 [133] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG243 [132] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG244 [133] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG244 print_cls::@1 + //SEG245 print_cls::@1 b1: - //SEG245 [133] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG246 [134] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG246 [134] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG247 [135] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG247 [135] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG248 [136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -3887,26 +3881,26 @@ print_cls: { cmp #$ffff sta SID_VOICE3_FREQ+1 - //SEG252 [138] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG253 [139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG253 sid_rnd_init::@return + //SEG254 sid_rnd_init::@return breturn: - //SEG254 [139] return + //SEG255 [140] return rts } .pc = SINTABLE "SINTABLE" @@ -3939,48 +3933,49 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ d Statement [35] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ) always clobbers reg byte a Statement [36] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a Statement [40] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a -Statement [42] (byte~) doplasma::$6 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$6 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ doplasma::i2#4 doplasma::i2#1 ] -Statement [44] (byte~) doplasma::$11 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$11 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$11 ] ) always clobbers reg byte a -Statement [46] (byte~) doplasma::$14 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$14 ] ) always clobbers reg byte a -Statement [48] (byte~) doplasma::$17 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$17 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$17 ] ) always clobbers reg byte a -Statement [50] (byte~) doplasma::$20 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$20 ] ) always clobbers reg byte a -Statement [52] (byte~) doplasma::$23 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$23 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$23 ] ) always clobbers reg byte a -Statement [54] (byte~) doplasma::$26 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$26 ] ) always clobbers reg byte a -Statement [56] (byte~) doplasma::$29 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$29 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$29 ] ) always clobbers reg byte a -Statement [58] (byte~) doplasma::$32 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$32 ] ) always clobbers reg byte a -Statement [60] (byte~) doplasma::$35 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$35 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$35 ] ) always clobbers reg byte a -Statement [62] (byte~) doplasma::$38 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$38 ] ) always clobbers reg byte a -Statement [64] (byte~) doplasma::$41 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$41 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$41 ] ) always clobbers reg byte a -Statement [66] (byte~) doplasma::$44 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$44 ] ) always clobbers reg byte a -Statement [68] (byte~) doplasma::$47 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$47 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$47 ] ) always clobbers reg byte a -Statement [70] (byte~) doplasma::$50 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$50 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$50 ] ) always clobbers reg byte a -Statement [72] (byte~) doplasma::$53 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$53 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$53 ] ) always clobbers reg byte a -Statement [74] (byte~) doplasma::$56 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$56 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$56 ] ) always clobbers reg byte a -Statement [76] (byte~) doplasma::$59 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$59 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$59 ] ) always clobbers reg byte a -Statement [78] (byte~) doplasma::$62 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$62 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$62 ] ) always clobbers reg byte a -Statement [80] (byte~) doplasma::$65 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$65 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$65 ] ) always clobbers reg byte a -Statement [82] (byte~) doplasma::$68 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$68 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$68 ] ) always clobbers reg byte a -Statement [84] (byte~) doplasma::$71 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$71 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$71 ] ) always clobbers reg byte a -Statement [86] (byte~) doplasma::$74 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$74 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$74 ] ) always clobbers reg byte a -Statement [88] (byte~) doplasma::$77 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$77 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$77 ] ) always clobbers reg byte a -Statement [90] (byte~) doplasma::$80 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$80 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$80 ] ) always clobbers reg byte a -Statement [100] (byte~) makecharset::$2 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ) always clobbers reg byte a -Statement [109] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ makecharset::s#0 ] +Statement [43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$6 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ doplasma::xval#0 ] +Statement [45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$11 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$11 ] ) always clobbers reg byte a +Statement [47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$14 ] ) always clobbers reg byte a +Statement [49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$17 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$17 ] ) always clobbers reg byte a +Statement [51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$20 ] ) always clobbers reg byte a +Statement [53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$23 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$23 ] ) always clobbers reg byte a +Statement [55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$26 ] ) always clobbers reg byte a +Statement [57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$29 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$29 ] ) always clobbers reg byte a +Statement [59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$32 ] ) always clobbers reg byte a +Statement [61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$35 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$35 ] ) always clobbers reg byte a +Statement [63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$38 ] ) always clobbers reg byte a +Statement [65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$41 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$41 ] ) always clobbers reg byte a +Statement [67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$44 ] ) always clobbers reg byte a +Statement [69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$47 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$47 ] ) always clobbers reg byte a +Statement [71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$50 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$50 ] ) always clobbers reg byte a +Statement [73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$53 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$53 ] ) always clobbers reg byte a +Statement [75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$56 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$56 ] ) always clobbers reg byte a +Statement [77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$59 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$59 ] ) always clobbers reg byte a +Statement [79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$62 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$62 ] ) always clobbers reg byte a +Statement [81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$65 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$65 ] ) always clobbers reg byte a +Statement [83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$68 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$68 ] ) always clobbers reg byte a +Statement [85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$71 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$71 ] ) always clobbers reg byte a +Statement [87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$74 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$74 ] ) always clobbers reg byte a +Statement [89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$77 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$77 ] ) always clobbers reg byte a +Statement [91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::$80 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::$80 ] ) always clobbers reg byte a +Statement [101] (byte~) makecharset::$2 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ) always clobbers reg byte a +Statement [110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ makecharset::s#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ makecharset::ii#2 makecharset::ii#1 ] -Statement [113] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ) always clobbers reg byte a +Statement [114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] -Statement [114] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ) always clobbers reg byte a -Statement [115] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ) always clobbers reg byte a -Statement [118] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ) always clobbers reg byte a -Statement [124] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 [ makecharset::c#1 print_char_cursor#18 ] ( main:3::makecharset:13 [ makecharset::c#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [126] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 [ print_char_cursor#45 ] ( main:3::makecharset:13::print_char:121 [ makecharset::c#2 print_char_cursor#45 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::makecharset:13::print_cls:98 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [135] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::makecharset:13::print_cls:98 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [137] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:3::makecharset:13::sid_rnd_init:96 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:3::makecharset:13::sid_rnd_init:96 [ ] ) always clobbers reg byte a +Statement [115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ) always clobbers reg byte a +Statement [116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ) always clobbers reg byte a +Statement [119] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ) always clobbers reg byte a +Statement [125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 [ makecharset::c#1 print_char_cursor#18 ] ( main:3::makecharset:13 [ makecharset::c#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 [ print_char_cursor#45 ] ( main:3::makecharset:13::print_char:122 [ makecharset::c#2 print_char_cursor#45 ] ) always clobbers reg byte a reg byte y +Statement [134] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::makecharset:13::print_cls:99 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::makecharset:13::print_cls:99 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [138] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:3::makecharset:13::sid_rnd_init:97 [ ] ) always clobbers reg byte a +Statement [139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:3::makecharset:13::sid_rnd_init:97 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) BORDERCOL#0) ← (const byte) BLUE#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [9] *((byte*) main::col#2) ← (const byte) BLACK#0 [ main::col#2 ] ( main:3 [ main::col#2 ] ) always clobbers reg byte a reg byte y @@ -3995,43 +3990,43 @@ Statement [33] (byte~) doplasma::$2 ← *((const byte*) SINTABLE#0 + (byte) dopl Statement [35] (byte) doplasma::c2a#1 ← (byte) doplasma::c2a#2 + (byte/signed byte/word/signed word/dword/signed dword) 3 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::c2b#2 doplasma::i1#2 doplasma::c2a#1 ] ) always clobbers reg byte a Statement [36] (byte) doplasma::c2b#1 ← (byte) doplasma::c2b#2 + (byte/signed byte/word/signed word/dword/signed dword) 7 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ( main:3::doplasma:18 [ c2A#1 c2B#1 c1A#3 c1B#3 doplasma::i1#2 doplasma::c2a#1 doplasma::c2b#1 ] ) always clobbers reg byte a Statement [40] (byte) c2B#3 ← (byte) c2B#1 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 ] ) always clobbers reg byte a -Statement [42] (byte~) doplasma::$6 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$6 ] ) always clobbers reg byte a -Statement [44] (byte~) doplasma::$11 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$11 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$11 ] ) always clobbers reg byte a -Statement [46] (byte~) doplasma::$14 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$14 ] ) always clobbers reg byte a -Statement [48] (byte~) doplasma::$17 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$17 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$17 ] ) always clobbers reg byte a -Statement [50] (byte~) doplasma::$20 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$20 ] ) always clobbers reg byte a -Statement [52] (byte~) doplasma::$23 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$23 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$23 ] ) always clobbers reg byte a -Statement [54] (byte~) doplasma::$26 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$26 ] ) always clobbers reg byte a -Statement [56] (byte~) doplasma::$29 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$29 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$29 ] ) always clobbers reg byte a -Statement [58] (byte~) doplasma::$32 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$32 ] ) always clobbers reg byte a -Statement [60] (byte~) doplasma::$35 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$35 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$35 ] ) always clobbers reg byte a -Statement [62] (byte~) doplasma::$38 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$38 ] ) always clobbers reg byte a -Statement [64] (byte~) doplasma::$41 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$41 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$41 ] ) always clobbers reg byte a -Statement [66] (byte~) doplasma::$44 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$44 ] ) always clobbers reg byte a -Statement [68] (byte~) doplasma::$47 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$47 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$47 ] ) always clobbers reg byte a -Statement [70] (byte~) doplasma::$50 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$50 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$50 ] ) always clobbers reg byte a -Statement [72] (byte~) doplasma::$53 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$53 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$53 ] ) always clobbers reg byte a -Statement [74] (byte~) doplasma::$56 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$56 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$56 ] ) always clobbers reg byte a -Statement [76] (byte~) doplasma::$59 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$59 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$59 ] ) always clobbers reg byte a -Statement [78] (byte~) doplasma::$62 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$62 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$62 ] ) always clobbers reg byte a -Statement [80] (byte~) doplasma::$65 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$65 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$65 ] ) always clobbers reg byte a -Statement [82] (byte~) doplasma::$68 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$68 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$68 ] ) always clobbers reg byte a -Statement [84] (byte~) doplasma::$71 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$71 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$71 ] ) always clobbers reg byte a -Statement [86] (byte~) doplasma::$74 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$74 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$74 ] ) always clobbers reg byte a -Statement [88] (byte~) doplasma::$77 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$77 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$77 ] ) always clobbers reg byte a -Statement [90] (byte~) doplasma::$80 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$80 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#4 doplasma::$80 ] ) always clobbers reg byte a -Statement [100] (byte~) makecharset::$2 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ) always clobbers reg byte a -Statement [109] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a -Statement [113] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ) always clobbers reg byte a -Statement [114] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ) always clobbers reg byte a -Statement [115] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ) always clobbers reg byte a -Statement [118] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ) always clobbers reg byte a -Statement [124] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 [ makecharset::c#1 print_char_cursor#18 ] ( main:3::makecharset:13 [ makecharset::c#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [126] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 [ print_char_cursor#45 ] ( main:3::makecharset:13::print_char:121 [ makecharset::c#2 print_char_cursor#45 ] ) always clobbers reg byte a reg byte y -Statement [133] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::makecharset:13::print_cls:98 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [135] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::makecharset:13::print_cls:98 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [137] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:3::makecharset:13::sid_rnd_init:96 [ ] ) always clobbers reg byte a -Statement [138] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:3::makecharset:13::sid_rnd_init:96 [ ] ) always clobbers reg byte a +Statement [43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$6 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$6 ] ) always clobbers reg byte a +Statement [45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$11 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$11 ] ) always clobbers reg byte a +Statement [47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$14 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$14 ] ) always clobbers reg byte a +Statement [49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$17 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$17 ] ) always clobbers reg byte a +Statement [51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$20 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$20 ] ) always clobbers reg byte a +Statement [53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$23 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$23 ] ) always clobbers reg byte a +Statement [55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$26 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$26 ] ) always clobbers reg byte a +Statement [57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$29 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$29 ] ) always clobbers reg byte a +Statement [59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$32 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$32 ] ) always clobbers reg byte a +Statement [61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$35 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$35 ] ) always clobbers reg byte a +Statement [63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$38 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$38 ] ) always clobbers reg byte a +Statement [65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$41 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$41 ] ) always clobbers reg byte a +Statement [67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$44 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$44 ] ) always clobbers reg byte a +Statement [69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$47 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$47 ] ) always clobbers reg byte a +Statement [71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$50 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$50 ] ) always clobbers reg byte a +Statement [73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$53 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$53 ] ) always clobbers reg byte a +Statement [75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$56 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$56 ] ) always clobbers reg byte a +Statement [77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$59 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$59 ] ) always clobbers reg byte a +Statement [79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$62 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$62 ] ) always clobbers reg byte a +Statement [81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$65 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$65 ] ) always clobbers reg byte a +Statement [83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$68 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$68 ] ) always clobbers reg byte a +Statement [85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$71 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$71 ] ) always clobbers reg byte a +Statement [87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$74 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$74 ] ) always clobbers reg byte a +Statement [89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$77 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::xval#0 doplasma::$77 ] ) always clobbers reg byte a +Statement [91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::$80 ] ( main:3::doplasma:18 [ c1A#3 c1B#3 c2A#3 c2B#3 doplasma::i2#2 doplasma::$80 ] ) always clobbers reg byte a +Statement [101] (byte~) makecharset::$2 ← < (word) makecharset::c#2 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$2 ] ) always clobbers reg byte a +Statement [110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::ii#2 makecharset::b#1 ] ) always clobbers reg byte a +Statement [114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$8 ] ) always clobbers reg byte a +Statement [115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 makecharset::b#3 makecharset::$9 ] ) always clobbers reg byte a +Statement [116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::s#0 makecharset::i#7 ] ) always clobbers reg byte a +Statement [119] (byte/word~) makecharset::$11 ← (word) makecharset::c#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ( main:3::makecharset:13 [ makecharset::c#2 print_char_cursor#45 makecharset::$11 ] ) always clobbers reg byte a +Statement [125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 [ makecharset::c#1 print_char_cursor#18 ] ( main:3::makecharset:13 [ makecharset::c#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 [ print_char_cursor#45 ] ( main:3::makecharset:13::print_char:122 [ makecharset::c#2 print_char_cursor#45 ] ) always clobbers reg byte a reg byte y +Statement [134] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::makecharset:13::print_cls:99 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::makecharset:13::print_cls:99 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [138] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) $ffff [ ] ( main:3::makecharset:13::sid_rnd_init:97 [ ] ) always clobbers reg byte a +Statement [139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:3::makecharset:13::sid_rnd_init:97 [ ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ main::col#2 main::col#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_BYTE:4 [ c1A#1 c1A#3 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:5 [ c1B#1 c1B#3 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -4043,7 +4038,7 @@ Potential registers zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] : zp ZP_BYTE:1 Potential registers zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:14 [ doplasma::i2#4 doplasma::i2#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , Potential registers zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] : zp ZP_WORD:15 , Potential registers zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] : zp ZP_WORD:17 , Potential registers zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] : zp ZP_BYTE:19 , reg byte x , reg byte y , @@ -4052,156 +4047,159 @@ Potential registers zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharse Potential registers zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:22 , Potential registers zp ZP_BYTE:24 [ doplasma::$0 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:25 [ doplasma::$2 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ doplasma::$6 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ doplasma::$11 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:28 [ doplasma::$14 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ doplasma::$17 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ doplasma::$20 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ doplasma::$23 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ doplasma::$26 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ doplasma::$29 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ doplasma::$32 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ doplasma::$35 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:36 [ doplasma::$38 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:37 [ doplasma::$41 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:38 [ doplasma::$44 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:39 [ doplasma::$47 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:40 [ doplasma::$50 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:41 [ doplasma::$53 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:42 [ doplasma::$56 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:43 [ doplasma::$59 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:44 [ doplasma::$62 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ doplasma::$65 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:46 [ doplasma::$68 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:47 [ doplasma::$71 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ doplasma::$74 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ doplasma::$77 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ doplasma::$80 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:51 [ makecharset::$2 ] : zp ZP_BYTE:51 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:52 [ makecharset::s#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:53 [ sid_rnd::return#2 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ makecharset::$3 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:55 [ makecharset::$4 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:56 [ makecharset::$8 ] : zp ZP_WORD:56 , -Potential registers zp ZP_WORD:58 [ makecharset::$9 ] : zp ZP_WORD:58 , -Potential registers zp ZP_BYTE:60 [ makecharset::$11 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:61 [ sid_rnd::return#0 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ doplasma::xval#0 ] : zp ZP_BYTE:26 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ doplasma::$6 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:28 [ doplasma::$11 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ doplasma::$14 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ doplasma::$17 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ doplasma::$20 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ doplasma::$23 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ doplasma::$26 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ doplasma::$29 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:35 [ doplasma::$32 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:36 [ doplasma::$35 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:37 [ doplasma::$38 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ doplasma::$41 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:39 [ doplasma::$44 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:40 [ doplasma::$47 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:41 [ doplasma::$50 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:42 [ doplasma::$53 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:43 [ doplasma::$56 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ doplasma::$59 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ doplasma::$62 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:46 [ doplasma::$65 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:47 [ doplasma::$68 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:48 [ doplasma::$71 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ doplasma::$74 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ doplasma::$77 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ doplasma::$80 ] : zp ZP_BYTE:51 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:52 [ makecharset::$2 ] : zp ZP_BYTE:52 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:53 [ makecharset::s#0 ] : zp ZP_BYTE:53 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:54 [ sid_rnd::return#2 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ makecharset::$3 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:56 [ makecharset::$4 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:57 [ makecharset::$8 ] : zp ZP_WORD:57 , +Potential registers zp ZP_WORD:59 [ makecharset::$9 ] : zp ZP_WORD:59 , +Potential registers zp ZP_BYTE:61 [ makecharset::$11 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:62 [ sid_rnd::return#0 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [makecharset] 3,123.3: zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] 2,002: zp ZP_BYTE:54 [ makecharset::$3 ] 2,002: zp ZP_BYTE:55 [ makecharset::$4 ] 1,876.88: zp ZP_BYTE:20 [ makecharset::ii#2 makecharset::ii#1 ] 202: zp ZP_WORD:56 [ makecharset::$8 ] 202: zp ZP_WORD:58 [ makecharset::$9 ] 173.14: zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] 59.53: zp ZP_BYTE:52 [ makecharset::s#0 ] 22.54: zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] 22: zp ZP_BYTE:51 [ makecharset::$2 ] 22: zp ZP_BYTE:60 [ makecharset::$11 ] -Uplift Scope [doplasma] 254.48: zp ZP_BYTE:14 [ doplasma::i2#4 doplasma::i2#1 ] 212.1: zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] 212.1: zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] 202: zp ZP_BYTE:24 [ doplasma::$0 ] 202: zp ZP_BYTE:25 [ doplasma::$2 ] 202: zp ZP_BYTE:26 [ doplasma::$6 ] 202: zp ZP_BYTE:27 [ doplasma::$11 ] 202: zp ZP_BYTE:28 [ doplasma::$14 ] 202: zp ZP_BYTE:29 [ doplasma::$17 ] 202: zp ZP_BYTE:30 [ doplasma::$20 ] 202: zp ZP_BYTE:31 [ doplasma::$23 ] 202: zp ZP_BYTE:32 [ doplasma::$26 ] 202: zp ZP_BYTE:33 [ doplasma::$29 ] 202: zp ZP_BYTE:34 [ doplasma::$32 ] 202: zp ZP_BYTE:35 [ doplasma::$35 ] 202: zp ZP_BYTE:36 [ doplasma::$38 ] 202: zp ZP_BYTE:37 [ doplasma::$41 ] 202: zp ZP_BYTE:38 [ doplasma::$44 ] 202: zp ZP_BYTE:39 [ doplasma::$47 ] 202: zp ZP_BYTE:40 [ doplasma::$50 ] 202: zp ZP_BYTE:41 [ doplasma::$53 ] 202: zp ZP_BYTE:42 [ doplasma::$56 ] 202: zp ZP_BYTE:43 [ doplasma::$59 ] 202: zp ZP_BYTE:44 [ doplasma::$62 ] 202: zp ZP_BYTE:45 [ doplasma::$65 ] 202: zp ZP_BYTE:46 [ doplasma::$68 ] 202: zp ZP_BYTE:47 [ doplasma::$71 ] 202: zp ZP_BYTE:48 [ doplasma::$74 ] 202: zp ZP_BYTE:49 [ doplasma::$77 ] 202: zp ZP_BYTE:50 [ doplasma::$80 ] 154.17: zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 154.17: zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 147.58: zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 147.58: zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Uplift Scope [sid_rnd] 2,002: zp ZP_BYTE:53 [ sid_rnd::return#2 ] 334.33: zp ZP_BYTE:61 [ sid_rnd::return#0 ] +Uplift Scope [makecharset] 3,123.3: zp ZP_BYTE:21 [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] 2,002: zp ZP_BYTE:55 [ makecharset::$3 ] 2,002: zp ZP_BYTE:56 [ makecharset::$4 ] 1,876.88: zp ZP_BYTE:20 [ makecharset::ii#2 makecharset::ii#1 ] 202: zp ZP_WORD:57 [ makecharset::$8 ] 202: zp ZP_WORD:59 [ makecharset::$9 ] 173.14: zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] 59.53: zp ZP_BYTE:53 [ makecharset::s#0 ] 22.54: zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] 22: zp ZP_BYTE:52 [ makecharset::$2 ] 22: zp ZP_BYTE:61 [ makecharset::$11 ] +Uplift Scope [doplasma] 212.1: zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] 212.1: zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] 205.88: zp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] 202: zp ZP_BYTE:24 [ doplasma::$0 ] 202: zp ZP_BYTE:25 [ doplasma::$2 ] 202: zp ZP_BYTE:27 [ doplasma::$6 ] 202: zp ZP_BYTE:28 [ doplasma::$11 ] 202: zp ZP_BYTE:29 [ doplasma::$14 ] 202: zp ZP_BYTE:30 [ doplasma::$17 ] 202: zp ZP_BYTE:31 [ doplasma::$20 ] 202: zp ZP_BYTE:32 [ doplasma::$23 ] 202: zp ZP_BYTE:33 [ doplasma::$26 ] 202: zp ZP_BYTE:34 [ doplasma::$29 ] 202: zp ZP_BYTE:35 [ doplasma::$32 ] 202: zp ZP_BYTE:36 [ doplasma::$35 ] 202: zp ZP_BYTE:37 [ doplasma::$38 ] 202: zp ZP_BYTE:38 [ doplasma::$41 ] 202: zp ZP_BYTE:39 [ doplasma::$44 ] 202: zp ZP_BYTE:40 [ doplasma::$47 ] 202: zp ZP_BYTE:41 [ doplasma::$50 ] 202: zp ZP_BYTE:42 [ doplasma::$53 ] 202: zp ZP_BYTE:43 [ doplasma::$56 ] 202: zp ZP_BYTE:44 [ doplasma::$59 ] 202: zp ZP_BYTE:45 [ doplasma::$62 ] 202: zp ZP_BYTE:46 [ doplasma::$65 ] 202: zp ZP_BYTE:47 [ doplasma::$68 ] 202: zp ZP_BYTE:48 [ doplasma::$71 ] 202: zp ZP_BYTE:49 [ doplasma::$74 ] 202: zp ZP_BYTE:50 [ doplasma::$77 ] 202: zp ZP_BYTE:51 [ doplasma::$80 ] 154.17: zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] 154.17: zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] 147.58: zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] 147.58: zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] 53.59: zp ZP_BYTE:26 [ doplasma::xval#0 ] +Uplift Scope [sid_rnd] 2,002: zp ZP_BYTE:54 [ sid_rnd::return#2 ] 334.33: zp ZP_BYTE:62 [ sid_rnd::return#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [main] 33: zp ZP_WORD:2 [ main::col#2 main::col#1 ] Uplift Scope [] 16.46: zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] 1.55: zp ZP_BYTE:4 [ c1A#1 c1A#3 ] 1.44: zp ZP_BYTE:5 [ c1B#1 c1B#3 ] 0.91: zp ZP_BYTE:6 [ c2A#1 c2A#3 ] 0.88: zp ZP_BYTE:7 [ c2B#1 c2B#3 ] Uplift Scope [print_char] Uplift Scope [sid_rnd_init] -Uplifting [makecharset] best 173485 combination reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] reg byte a [ makecharset::$3 ] zp ZP_BYTE:55 [ makecharset::$4 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] zp ZP_WORD:56 [ makecharset::$8 ] zp ZP_WORD:58 [ makecharset::$9 ] zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] zp ZP_BYTE:52 [ makecharset::s#0 ] zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] zp ZP_BYTE:51 [ makecharset::$2 ] zp ZP_BYTE:60 [ makecharset::$11 ] +Uplifting [makecharset] best 163555 combination reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] reg byte a [ makecharset::$3 ] zp ZP_BYTE:56 [ makecharset::$4 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] zp ZP_WORD:57 [ makecharset::$8 ] zp ZP_WORD:59 [ makecharset::$9 ] zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] zp ZP_BYTE:53 [ makecharset::s#0 ] zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] zp ZP_BYTE:52 [ makecharset::$2 ] zp ZP_BYTE:61 [ makecharset::$11 ] Limited combination testing to 100 combinations of 20736 possible. -Uplifting [sid_rnd] best 164482 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [print_cls] best 164482 combination zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [main] best 164482 combination zp ZP_WORD:2 [ main::col#2 main::col#1 ] -Uplifting [] best 164482 combination zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] zp ZP_BYTE:4 [ c1A#1 c1A#3 ] zp ZP_BYTE:5 [ c1B#1 c1B#3 ] zp ZP_BYTE:6 [ c2A#1 c2A#3 ] zp ZP_BYTE:7 [ c2B#1 c2B#3 ] -Uplifting [print_char] best 164482 combination -Uplifting [sid_rnd_init] best 164482 combination -Attempting to uplift remaining variables inzp ZP_BYTE:55 [ makecharset::$4 ] -Uplifting [makecharset] best 164482 combination zp ZP_BYTE:55 [ makecharset::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ doplasma::i2#4 doplasma::i2#1 ] -Uplifting [doplasma] best 148582 combination reg byte x [ doplasma::i2#4 doplasma::i2#1 ] +Uplifting [sid_rnd] best 154552 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [print_cls] best 154552 combination zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [main] best 154552 combination zp ZP_WORD:2 [ main::col#2 main::col#1 ] +Uplifting [] best 154552 combination zp ZP_WORD:17 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] zp ZP_BYTE:4 [ c1A#1 c1A#3 ] zp ZP_BYTE:5 [ c1B#1 c1B#3 ] zp ZP_BYTE:6 [ c2A#1 c2A#3 ] zp ZP_BYTE:7 [ c2B#1 c2B#3 ] +Uplifting [print_char] best 154552 combination +Uplifting [sid_rnd_init] best 154552 combination +Attempting to uplift remaining variables inzp ZP_BYTE:56 [ makecharset::$4 ] +Uplifting [makecharset] best 154552 combination zp ZP_BYTE:56 [ makecharset::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] -Uplifting [doplasma] best 148582 combination zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] +Uplifting [doplasma] best 154552 combination zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] -Uplifting [doplasma] best 148582 combination zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] +Uplifting [doplasma] best 154552 combination zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ doplasma::i2#2 doplasma::i2#1 ] +Uplifting [doplasma] best 145852 combination reg byte x [ doplasma::i2#2 doplasma::i2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ doplasma::$0 ] -Uplifting [doplasma] best 147982 combination reg byte a [ doplasma::$0 ] +Uplifting [doplasma] best 145252 combination reg byte a [ doplasma::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ doplasma::$2 ] -Uplifting [doplasma] best 147382 combination reg byte a [ doplasma::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ doplasma::$6 ] -Uplifting [doplasma] best 146782 combination reg byte a [ doplasma::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ doplasma::$11 ] -Uplifting [doplasma] best 146182 combination reg byte a [ doplasma::$11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:28 [ doplasma::$14 ] -Uplifting [doplasma] best 145582 combination reg byte a [ doplasma::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ doplasma::$17 ] -Uplifting [doplasma] best 144982 combination reg byte a [ doplasma::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ doplasma::$20 ] -Uplifting [doplasma] best 144382 combination reg byte a [ doplasma::$20 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ doplasma::$23 ] -Uplifting [doplasma] best 143782 combination reg byte a [ doplasma::$23 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ doplasma::$26 ] -Uplifting [doplasma] best 143182 combination reg byte a [ doplasma::$26 ] -Attempting to uplift remaining variables inzp ZP_BYTE:33 [ doplasma::$29 ] -Uplifting [doplasma] best 142582 combination reg byte a [ doplasma::$29 ] -Attempting to uplift remaining variables inzp ZP_BYTE:34 [ doplasma::$32 ] -Uplifting [doplasma] best 141982 combination reg byte a [ doplasma::$32 ] -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ doplasma::$35 ] -Uplifting [doplasma] best 141382 combination reg byte a [ doplasma::$35 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ doplasma::$38 ] -Uplifting [doplasma] best 140782 combination reg byte a [ doplasma::$38 ] -Attempting to uplift remaining variables inzp ZP_BYTE:37 [ doplasma::$41 ] -Uplifting [doplasma] best 140182 combination reg byte a [ doplasma::$41 ] -Attempting to uplift remaining variables inzp ZP_BYTE:38 [ doplasma::$44 ] -Uplifting [doplasma] best 139582 combination reg byte a [ doplasma::$44 ] -Attempting to uplift remaining variables inzp ZP_BYTE:39 [ doplasma::$47 ] -Uplifting [doplasma] best 138982 combination reg byte a [ doplasma::$47 ] -Attempting to uplift remaining variables inzp ZP_BYTE:40 [ doplasma::$50 ] -Uplifting [doplasma] best 138382 combination reg byte a [ doplasma::$50 ] -Attempting to uplift remaining variables inzp ZP_BYTE:41 [ doplasma::$53 ] -Uplifting [doplasma] best 137782 combination reg byte a [ doplasma::$53 ] -Attempting to uplift remaining variables inzp ZP_BYTE:42 [ doplasma::$56 ] -Uplifting [doplasma] best 137182 combination reg byte a [ doplasma::$56 ] -Attempting to uplift remaining variables inzp ZP_BYTE:43 [ doplasma::$59 ] -Uplifting [doplasma] best 136582 combination reg byte a [ doplasma::$59 ] -Attempting to uplift remaining variables inzp ZP_BYTE:44 [ doplasma::$62 ] -Uplifting [doplasma] best 135982 combination reg byte a [ doplasma::$62 ] -Attempting to uplift remaining variables inzp ZP_BYTE:45 [ doplasma::$65 ] -Uplifting [doplasma] best 135382 combination reg byte a [ doplasma::$65 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ doplasma::$68 ] -Uplifting [doplasma] best 134782 combination reg byte a [ doplasma::$68 ] -Attempting to uplift remaining variables inzp ZP_BYTE:47 [ doplasma::$71 ] -Uplifting [doplasma] best 134182 combination reg byte a [ doplasma::$71 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ doplasma::$74 ] -Uplifting [doplasma] best 133582 combination reg byte a [ doplasma::$74 ] -Attempting to uplift remaining variables inzp ZP_BYTE:49 [ doplasma::$77 ] -Uplifting [doplasma] best 132982 combination reg byte a [ doplasma::$77 ] -Attempting to uplift remaining variables inzp ZP_BYTE:50 [ doplasma::$80 ] -Uplifting [doplasma] best 132382 combination reg byte a [ doplasma::$80 ] +Uplifting [doplasma] best 144652 combination reg byte a [ doplasma::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:27 [ doplasma::$6 ] +Uplifting [doplasma] best 144052 combination reg byte a [ doplasma::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:28 [ doplasma::$11 ] +Uplifting [doplasma] best 143452 combination reg byte a [ doplasma::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ doplasma::$14 ] +Uplifting [doplasma] best 142852 combination reg byte a [ doplasma::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:30 [ doplasma::$17 ] +Uplifting [doplasma] best 142252 combination reg byte a [ doplasma::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:31 [ doplasma::$20 ] +Uplifting [doplasma] best 141652 combination reg byte a [ doplasma::$20 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ doplasma::$23 ] +Uplifting [doplasma] best 141052 combination reg byte a [ doplasma::$23 ] +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ doplasma::$26 ] +Uplifting [doplasma] best 140452 combination reg byte a [ doplasma::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ doplasma::$29 ] +Uplifting [doplasma] best 139852 combination reg byte a [ doplasma::$29 ] +Attempting to uplift remaining variables inzp ZP_BYTE:35 [ doplasma::$32 ] +Uplifting [doplasma] best 139252 combination reg byte a [ doplasma::$32 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ doplasma::$35 ] +Uplifting [doplasma] best 138652 combination reg byte a [ doplasma::$35 ] +Attempting to uplift remaining variables inzp ZP_BYTE:37 [ doplasma::$38 ] +Uplifting [doplasma] best 138052 combination reg byte a [ doplasma::$38 ] +Attempting to uplift remaining variables inzp ZP_BYTE:38 [ doplasma::$41 ] +Uplifting [doplasma] best 137452 combination reg byte a [ doplasma::$41 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ doplasma::$44 ] +Uplifting [doplasma] best 136852 combination reg byte a [ doplasma::$44 ] +Attempting to uplift remaining variables inzp ZP_BYTE:40 [ doplasma::$47 ] +Uplifting [doplasma] best 136252 combination reg byte a [ doplasma::$47 ] +Attempting to uplift remaining variables inzp ZP_BYTE:41 [ doplasma::$50 ] +Uplifting [doplasma] best 135652 combination reg byte a [ doplasma::$50 ] +Attempting to uplift remaining variables inzp ZP_BYTE:42 [ doplasma::$53 ] +Uplifting [doplasma] best 135052 combination reg byte a [ doplasma::$53 ] +Attempting to uplift remaining variables inzp ZP_BYTE:43 [ doplasma::$56 ] +Uplifting [doplasma] best 134452 combination reg byte a [ doplasma::$56 ] +Attempting to uplift remaining variables inzp ZP_BYTE:44 [ doplasma::$59 ] +Uplifting [doplasma] best 133852 combination reg byte a [ doplasma::$59 ] +Attempting to uplift remaining variables inzp ZP_BYTE:45 [ doplasma::$62 ] +Uplifting [doplasma] best 133252 combination reg byte a [ doplasma::$62 ] +Attempting to uplift remaining variables inzp ZP_BYTE:46 [ doplasma::$65 ] +Uplifting [doplasma] best 132652 combination reg byte a [ doplasma::$65 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ doplasma::$68 ] +Uplifting [doplasma] best 132052 combination reg byte a [ doplasma::$68 ] +Attempting to uplift remaining variables inzp ZP_BYTE:48 [ doplasma::$71 ] +Uplifting [doplasma] best 131452 combination reg byte a [ doplasma::$71 ] +Attempting to uplift remaining variables inzp ZP_BYTE:49 [ doplasma::$74 ] +Uplifting [doplasma] best 130852 combination reg byte a [ doplasma::$74 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ doplasma::$77 ] +Uplifting [doplasma] best 130252 combination reg byte a [ doplasma::$77 ] +Attempting to uplift remaining variables inzp ZP_BYTE:51 [ doplasma::$80 ] +Uplifting [doplasma] best 129652 combination reg byte a [ doplasma::$80 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] -Uplifting [makecharset] best 132382 combination zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] +Uplifting [makecharset] best 129652 combination zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] -Uplifting [doplasma] best 132382 combination zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] +Uplifting [doplasma] best 129652 combination zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] -Uplifting [doplasma] best 132382 combination zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] +Uplifting [doplasma] best 129652 combination zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] -Uplifting [doplasma] best 132382 combination zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] +Uplifting [doplasma] best 129652 combination zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Uplifting [doplasma] best 132382 combination zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:52 [ makecharset::s#0 ] -Uplifting [makecharset] best 132382 combination zp ZP_BYTE:52 [ makecharset::s#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:51 [ makecharset::$2 ] -Uplifting [makecharset] best 132342 combination reg byte a [ makecharset::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:60 [ makecharset::$11 ] -Uplifting [makecharset] best 132282 combination reg byte a [ makecharset::$11 ] +Uplifting [doplasma] best 129652 combination zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:53 [ makecharset::s#0 ] +Uplifting [makecharset] best 129652 combination zp ZP_BYTE:53 [ makecharset::s#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ doplasma::xval#0 ] +Uplifting [doplasma] best 126852 combination reg byte y [ doplasma::xval#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ makecharset::$2 ] +Uplifting [makecharset] best 126812 combination reg byte a [ makecharset::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:61 [ makecharset::$11 ] +Uplifting [makecharset] best 126752 combination reg byte a [ makecharset::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ c1A#1 c1A#3 ] -Uplifting [] best 132282 combination zp ZP_BYTE:4 [ c1A#1 c1A#3 ] +Uplifting [] best 126752 combination zp ZP_BYTE:4 [ c1A#1 c1A#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ c1B#1 c1B#3 ] -Uplifting [] best 132282 combination zp ZP_BYTE:5 [ c1B#1 c1B#3 ] +Uplifting [] best 126752 combination zp ZP_BYTE:5 [ c1B#1 c1B#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ c2A#1 c2A#3 ] -Uplifting [] best 132282 combination zp ZP_BYTE:6 [ c2A#1 c2A#3 ] +Uplifting [] best 126752 combination zp ZP_BYTE:6 [ c2A#1 c2A#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ c2B#1 c2B#3 ] -Uplifting [] best 132282 combination zp ZP_BYTE:7 [ c2B#1 c2B#3 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:56 [ makecharset::$8 ] ] with [ zp ZP_WORD:58 [ makecharset::$9 ] ] - score: 1 +Uplifting [] best 126752 combination zp ZP_BYTE:7 [ c2B#1 c2B#3 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:57 [ makecharset::$8 ] ] with [ zp ZP_WORD:59 [ makecharset::$9 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:2 [ main::col#2 main::col#1 ] ] with [ zp ZP_WORD:15 [ makecharset::c#2 makecharset::c#1 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ main::col#2 main::col#1 makecharset::c#2 makecharset::c#1 ] ] with [ zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] ] Coalescing zero page register [ zp ZP_BYTE:4 [ c1A#1 c1A#3 ] ] with [ zp ZP_BYTE:19 [ makecharset::i#7 makecharset::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ c1B#1 c1B#3 ] ] with [ zp ZP_BYTE:52 [ makecharset::s#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ c2A#1 c2A#3 ] ] with [ zp ZP_BYTE:55 [ makecharset::$4 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ c1B#1 c1B#3 ] ] with [ zp ZP_BYTE:53 [ makecharset::s#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ c2A#1 c2A#3 ] ] with [ zp ZP_BYTE:56 [ makecharset::$4 ] ] Coalescing zero page register [ zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 ] ] with [ zp ZP_BYTE:11 [ doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] ] Coalescing zero page register [ zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 ] ] with [ zp ZP_BYTE:12 [ doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 ] ] with [ zp ZP_BYTE:13 [ doplasma::i1#2 doplasma::i1#1 ] ] Allocated (was zp ZP_WORD:17) zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] -Allocated (was zp ZP_WORD:56) zp ZP_WORD:13 [ makecharset::$8 makecharset::$9 ] +Allocated (was zp ZP_WORD:57) zp ZP_WORD:13 [ makecharset::$8 makecharset::$9 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -4304,7 +4302,7 @@ main: { //SEG24 main::@2 b2: //SEG25 [13] call makecharset - //SEG26 [95] phi from main::@2 to makecharset [phi:main::@2->makecharset] + //SEG26 [96] phi from main::@2 to makecharset [phi:main::@2->makecharset] makecharset_from_b2: jsr makecharset //SEG27 [14] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] @@ -4474,257 +4472,260 @@ doplasma: { stx c2B //SEG86 [41] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] b5_from_b4: - //SEG87 [41] phi (byte) doplasma::i2#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 + //SEG87 [41] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 ldx #0 jmp b5 //SEG88 [41] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] b5_from_b7: - //SEG89 [41] phi (byte) doplasma::i2#4 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy + //SEG89 [41] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy jmp b5 //SEG90 doplasma::@5 b5: + //SEG91 [42] (byte) doplasma::xval#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) -- vbuyy=pbuc1_derefidx_vbuxx + ldy xbuf,x jmp b6 - //SEG91 doplasma::@6 + // Use experimental loop unrolling to increase the speed + //SEG92 doplasma::@6 b6: - //SEG92 [42] (byte~) doplasma::$6 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG93 [43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf - //SEG93 [43] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#4) ← (byte~) doplasma::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG94 [44] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1,x jmp b6_1 - //SEG94 doplasma::@6_1 + //SEG95 doplasma::@6_1 b6_1: - //SEG95 [44] (byte~) doplasma::$11 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG96 [45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+1 - //SEG96 [45] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$11 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG97 [46] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$11 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+1*$28,x jmp b6_2 - //SEG97 doplasma::@6_2 + //SEG98 doplasma::@6_2 b6_2: - //SEG98 [46] (byte~) doplasma::$14 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG99 [47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+2 - //SEG99 [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$14 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG100 [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$14 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+2*$28,x jmp b6_3 - //SEG100 doplasma::@6_3 + //SEG101 doplasma::@6_3 b6_3: - //SEG101 [48] (byte~) doplasma::$17 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG102 [49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+3 - //SEG102 [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$17 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG103 [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$17 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+3*$28,x jmp b6_4 - //SEG103 doplasma::@6_4 + //SEG104 doplasma::@6_4 b6_4: - //SEG104 [50] (byte~) doplasma::$20 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG105 [51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+4 - //SEG105 [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$20 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG106 [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$20 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+4*$28,x jmp b6_5 - //SEG106 doplasma::@6_5 + //SEG107 doplasma::@6_5 b6_5: - //SEG107 [52] (byte~) doplasma::$23 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG108 [53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+5 - //SEG108 [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$23 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG109 [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$23 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+5*$28,x jmp b6_6 - //SEG109 doplasma::@6_6 + //SEG110 doplasma::@6_6 b6_6: - //SEG110 [54] (byte~) doplasma::$26 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG111 [55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+6 - //SEG111 [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$26 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG112 [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$26 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+6*$28,x jmp b6_7 - //SEG112 doplasma::@6_7 + //SEG113 doplasma::@6_7 b6_7: - //SEG113 [56] (byte~) doplasma::$29 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG114 [57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+7 - //SEG114 [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$29 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG115 [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$29 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+7*$28,x jmp b6_8 - //SEG115 doplasma::@6_8 + //SEG116 doplasma::@6_8 b6_8: - //SEG116 [58] (byte~) doplasma::$32 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG117 [59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+8 - //SEG117 [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$32 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG118 [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$32 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+8*$28,x jmp b6_9 - //SEG118 doplasma::@6_9 + //SEG119 doplasma::@6_9 b6_9: - //SEG119 [60] (byte~) doplasma::$35 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG120 [61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+9 - //SEG120 [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$35 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG121 [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$35 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+9*$28,x jmp b6_10 - //SEG121 doplasma::@6_10 + //SEG122 doplasma::@6_10 b6_10: - //SEG122 [62] (byte~) doplasma::$38 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG123 [63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$a - //SEG123 [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$38 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG124 [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$38 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$a*$28,x jmp b6_11 - //SEG124 doplasma::@6_11 + //SEG125 doplasma::@6_11 b6_11: - //SEG125 [64] (byte~) doplasma::$41 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG126 [65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$b - //SEG126 [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$41 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG127 [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$41 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$b*$28,x jmp b6_12 - //SEG127 doplasma::@6_12 + //SEG128 doplasma::@6_12 b6_12: - //SEG128 [66] (byte~) doplasma::$44 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG129 [67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$c - //SEG129 [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$44 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG130 [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$44 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$c*$28,x jmp b6_13 - //SEG130 doplasma::@6_13 + //SEG131 doplasma::@6_13 b6_13: - //SEG131 [68] (byte~) doplasma::$47 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG132 [69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$d - //SEG132 [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$47 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG133 [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$47 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$d*$28,x jmp b6_14 - //SEG133 doplasma::@6_14 + //SEG134 doplasma::@6_14 b6_14: - //SEG134 [70] (byte~) doplasma::$50 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG135 [71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$e - //SEG135 [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$50 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG136 [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$50 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$e*$28,x jmp b6_15 - //SEG136 doplasma::@6_15 + //SEG137 doplasma::@6_15 b6_15: - //SEG137 [72] (byte~) doplasma::$53 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG138 [73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$f - //SEG138 [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$53 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG139 [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$53 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$f*$28,x jmp b6_16 - //SEG139 doplasma::@6_16 + //SEG140 doplasma::@6_16 b6_16: - //SEG140 [74] (byte~) doplasma::$56 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG141 [75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$10 - //SEG141 [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$56 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG142 [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$56 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$10*$28,x jmp b6_17 - //SEG142 doplasma::@6_17 + //SEG143 doplasma::@6_17 b6_17: - //SEG143 [76] (byte~) doplasma::$59 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG144 [77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$11 - //SEG144 [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$59 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG145 [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$59 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$11*$28,x jmp b6_18 - //SEG145 doplasma::@6_18 + //SEG146 doplasma::@6_18 b6_18: - //SEG146 [78] (byte~) doplasma::$62 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG147 [79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$12 - //SEG147 [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$62 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG148 [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$62 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$12*$28,x jmp b6_19 - //SEG148 doplasma::@6_19 + //SEG149 doplasma::@6_19 b6_19: - //SEG149 [80] (byte~) doplasma::$65 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG150 [81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$13 - //SEG150 [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$65 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG151 [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$65 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$13*$28,x jmp b6_20 - //SEG151 doplasma::@6_20 + //SEG152 doplasma::@6_20 b6_20: - //SEG152 [82] (byte~) doplasma::$68 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG153 [83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$14 - //SEG153 [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$68 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG154 [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$68 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$14*$28,x jmp b6_21 - //SEG154 doplasma::@6_21 + //SEG155 doplasma::@6_21 b6_21: - //SEG155 [84] (byte~) doplasma::$71 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG156 [85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$15 - //SEG156 [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$71 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG157 [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$71 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$15*$28,x jmp b6_22 - //SEG157 doplasma::@6_22 + //SEG158 doplasma::@6_22 b6_22: - //SEG158 [86] (byte~) doplasma::$74 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG159 [87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$16 - //SEG159 [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$74 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG160 [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$74 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$16*$28,x jmp b6_23 - //SEG160 doplasma::@6_23 + //SEG161 doplasma::@6_23 b6_23: - //SEG161 [88] (byte~) doplasma::$77 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG162 [89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$17 - //SEG162 [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$77 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG163 [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$77 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$17*$28,x jmp b6_24 - //SEG163 doplasma::@6_24 + //SEG164 doplasma::@6_24 b6_24: - //SEG164 [90] (byte~) doplasma::$80 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG165 [91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$18 - //SEG165 [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$80 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG166 [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$80 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$18*$28,x jmp b7 - //SEG166 doplasma::@7 + //SEG167 doplasma::@7 b7: - //SEG167 [92] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#4 -- vbuxx=_inc_vbuxx + //SEG168 [93] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx inx - //SEG168 [93] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 + //SEG169 [94] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 cpx #$28 bcc b5_from_b7 jmp breturn - //SEG169 doplasma::@return + //SEG170 doplasma::@return breturn: - //SEG170 [94] return + //SEG171 [95] return rts xbuf: .fill $28, 0 ybuf: .fill $19, 0 } -//SEG171 makecharset +//SEG172 makecharset // Make a plasma-friendly charset where the chars are randomly filled makecharset: { .label _4 = 6 @@ -4733,106 +4734,106 @@ makecharset: { .label s = 5 .label i = 4 .label c = 2 - //SEG172 [96] call sid_rnd_init + //SEG173 [97] call sid_rnd_init jsr sid_rnd_init - //SEG173 [97] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] + //SEG174 [98] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] b10_from_makecharset: jmp b10 - //SEG174 makecharset::@10 + //SEG175 makecharset::@10 b10: - //SEG175 [98] call print_cls - //SEG176 [131] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] + //SEG176 [99] call print_cls + //SEG177 [132] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] print_cls_from_b10: jsr print_cls - //SEG177 [99] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] + //SEG178 [100] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] b1_from_b10: - //SEG178 [99] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 + //SEG179 [100] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG179 [99] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 + //SEG180 [100] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 lda #0 sta c lda #0 sta c+1 jmp b1 - //SEG180 [99] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] + //SEG181 [100] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] b1_from_b9: - //SEG181 [99] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy - //SEG182 [99] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy + //SEG182 [100] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy + //SEG183 [100] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy jmp b1 - //SEG183 makecharset::@1 + //SEG184 makecharset::@1 b1: - //SEG184 [100] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 + //SEG185 [101] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 lda c - //SEG185 [101] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG186 [102] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa tay lda SINTABLE,y sta s - //SEG186 [102] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] + //SEG187 [103] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] b2_from_b1: - //SEG187 [102] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 + //SEG188 [103] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG188 [102] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] + //SEG189 [103] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] b2_from_b6: - //SEG189 [102] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy + //SEG190 [103] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy jmp b2 - //SEG190 makecharset::@2 + //SEG191 makecharset::@2 b2: - //SEG191 [103] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] + //SEG192 [104] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] b3_from_b2: - //SEG192 [103] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 + //SEG193 [104] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 ldy #0 - //SEG193 [103] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 + //SEG194 [104] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG194 [103] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] + //SEG195 [104] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] b3_from_b4: - //SEG195 [103] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy - //SEG196 [103] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy + //SEG196 [104] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy + //SEG197 [104] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy jmp b3 - //SEG197 makecharset::@3 + //SEG198 makecharset::@3 b3: - //SEG198 [104] call sid_rnd + //SEG199 [105] call sid_rnd jsr sid_rnd - //SEG199 [105] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG200 [106] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 jmp b11 - //SEG200 makecharset::@11 + //SEG201 makecharset::@11 b11: - //SEG201 [106] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 - //SEG202 [107] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 + //SEG202 [107] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 + //SEG203 [108] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 and #$ff sta _4 - //SEG203 [108] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 + //SEG204 [109] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 lda s cmp _4 bcs b4_from_b11 jmp b5 - //SEG204 makecharset::@5 + //SEG205 makecharset::@5 b5: - //SEG205 [109] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx + //SEG206 [110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx tya ora bittab,x tay - //SEG206 [110] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] + //SEG207 [111] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] b4_from_b11: b4_from_b5: - //SEG207 [110] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy + //SEG208 [111] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy jmp b4 - //SEG208 makecharset::@4 + //SEG209 makecharset::@4 b4: - //SEG209 [111] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx + //SEG210 [112] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx inx - //SEG210 [112] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG211 [113] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #8 bcc b3_from_b4 jmp b6 - //SEG211 makecharset::@6 + //SEG212 makecharset::@6 b6: - //SEG212 [113] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG213 [114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda c asl sta _8 @@ -4843,7 +4844,7 @@ makecharset: { rol _8+1 asl _8 rol _8+1 - //SEG213 [114] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 + //SEG214 [115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 lda i clc adc _9 @@ -4851,7 +4852,7 @@ makecharset: { bcc !+ inc _9+1 !: - //SEG214 [115] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy + //SEG215 [116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy tya sta !v++1 lda #makecharset::@8] + //SEG221 [121] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] b8_from_b7: jmp b8 - //SEG221 makecharset::@8 + //SEG222 makecharset::@8 b8: - //SEG222 [121] call print_char + //SEG223 [122] call print_char jsr print_char - //SEG223 [122] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] + //SEG224 [123] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] b9_from_b7: b9_from_b8: - //SEG224 [122] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy + //SEG225 [123] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy jmp b9 - //SEG225 makecharset::@9 + //SEG226 makecharset::@9 b9: - //SEG226 [123] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 + //SEG227 [124] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 inc c bne !+ inc c+1 !: - //SEG227 [124] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG228 [125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 lda c+1 cmp #>$100 bcc b1_from_b9 @@ -4909,71 +4910,71 @@ makecharset: { bcc b1_from_b9 !: jmp breturn - //SEG228 makecharset::@return + //SEG229 makecharset::@return breturn: - //SEG229 [125] return + //SEG230 [126] return rts bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80 } -//SEG230 print_char +//SEG231 print_char // Print a single char print_char: { .const ch = '.' - //SEG231 [126] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 + //SEG232 [127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (print_char_cursor),y - //SEG232 [127] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 + //SEG233 [128] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG233 print_char::@return + //SEG234 print_char::@return breturn: - //SEG234 [128] return + //SEG235 [129] return rts } -//SEG235 sid_rnd +//SEG236 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - //SEG236 [129] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG237 [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp breturn - //SEG237 sid_rnd::@return + //SEG238 sid_rnd::@return breturn: - //SEG238 [130] return + //SEG239 [131] return rts } -//SEG239 print_cls +//SEG240 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG240 [132] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG241 [133] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG241 [132] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG242 [133] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 jmp b1 - //SEG242 [132] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG243 [133] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG243 [132] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG244 [133] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG244 print_cls::@1 + //SEG245 print_cls::@1 b1: - //SEG245 [133] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG246 [134] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG246 [134] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG247 [135] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG247 [135] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG248 [136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1_from_b1 @@ -4981,26 +4982,26 @@ print_cls: { cmp #$ffff sta SID_VOICE3_FREQ+1 - //SEG252 [138] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG253 [139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG253 sid_rnd_init::@return + //SEG254 sid_rnd_init::@return breturn: - //SEG254 [139] return + //SEG255 [140] return rts } .pc = SINTABLE "SINTABLE" @@ -5079,8 +5080,7 @@ Replacing label b1_from_b1 with b1 Replacing label b3 with b4 Replacing label b1_from_b1 with b1 Replacing label b3_from_b3 with b3 -Replacing label b5 with b6 -Replacing label b5_from_b7 with b6 +Replacing label b5_from_b7 with b5 Replacing label b4_from_b11 with b4 Replacing label b3_from_b4 with b3 Replacing label b2_from_b6 with b2 @@ -5103,7 +5103,6 @@ Removing instruction b4_from_b3: Removing instruction b1_from_b1: Removing instruction b3_from_b3: Removing instruction b5_from_b7: -Removing instruction b5: Removing instruction b10_from_makecharset: Removing instruction print_cls_from_b10: Removing instruction b1_from_b9: @@ -5128,6 +5127,7 @@ Removing instruction b2: Removing instruction b3_from_b2: Removing instruction b4: Removing instruction b5_from_b4: +Removing instruction b6: Removing instruction b6_1: Removing instruction b6_2: Removing instruction b6_3: @@ -5175,7 +5175,7 @@ Succesful ASM optimization Pass5SkipBegin Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b3 -Removing instruction jmp b6 +Removing instruction jmp b5 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b3 @@ -5183,8 +5183,8 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [241] bcc b6 to bcs -Fixing long branch [339] bcc b1 to bcs +Fixing long branch [243] bcc b5 to bcs +Fixing long branch [341] bcc b1 to bcs FINAL SYMBOL TABLE (label) @1 @@ -5301,16 +5301,16 @@ FINAL SYMBOL TABLE (byte) YELLOW (byte) c1A (byte) c1A#1 c1A zp ZP_BYTE:4 1.3636363636363638 -(byte) c1A#3 c1A zp ZP_BYTE:4 0.1911764705882353 +(byte) c1A#3 c1A zp ZP_BYTE:4 0.18840579710144925 (byte) c1B (byte) c1B#1 c1B zp ZP_BYTE:5 1.25 -(byte) c1B#3 c1B zp ZP_BYTE:5 0.19402985074626866 +(byte) c1B#3 c1B zp ZP_BYTE:5 0.1911764705882353 (byte) c2A (byte) c2A#1 c2A zp ZP_BYTE:6 0.6818181818181819 -(byte) c2A#3 c2A zp ZP_BYTE:6 0.22807017543859648 +(byte) c2A#3 c2A zp ZP_BYTE:6 0.22413793103448276 (byte) c2B (byte) c2B#1 c2B zp ZP_BYTE:7 0.6521739130434783 -(byte) c2B#3 c2B zp ZP_BYTE:7 0.23214285714285715 +(byte) c2B#3 c2B zp ZP_BYTE:7 0.22807017543859648 (void()) doplasma((byte*) doplasma::screen) (byte~) doplasma::$0 reg byte a 202.0 (byte~) doplasma::$11 reg byte a 202.0 @@ -5395,11 +5395,13 @@ FINAL SYMBOL TABLE (byte) doplasma::i1#2 i1 zp ZP_BYTE:10 60.599999999999994 (byte) doplasma::i2 (byte) doplasma::i2#1 reg byte x 151.5 -(byte) doplasma::i2#4 reg byte x 102.98039215686288 +(byte) doplasma::i2#2 reg byte x 54.3846153846154 (byte) doplasma::ii (byte*) doplasma::screen (byte[$28]) doplasma::xbuf (const byte[$28]) doplasma::xbuf#0 xbuf = { fill( $28, 0) } +(byte) doplasma::xval +(byte) doplasma::xval#0 reg byte y 53.59183673469388 (byte[$19]) doplasma::ybuf (const byte[$19]) doplasma::ybuf#0 ybuf = { fill( $19, 0) } (void()) main() @@ -5496,12 +5498,13 @@ zp ZP_BYTE:7 [ c2B#1 c2B#3 ] zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 doplasma::i1#2 doplasma::i1#1 ] -reg byte x [ doplasma::i2#4 doplasma::i2#1 ] +reg byte x [ doplasma::i2#2 doplasma::i2#1 ] zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] reg byte a [ doplasma::$0 ] reg byte a [ doplasma::$2 ] +reg byte y [ doplasma::xval#0 ] reg byte a [ doplasma::$6 ] reg byte a [ doplasma::$11 ] reg byte a [ doplasma::$14 ] @@ -5536,7 +5539,7 @@ reg byte a [ sid_rnd::return#0 ] FINAL ASSEMBLER -Score: 102900 +Score: 97100 //SEG0 File Comments // A KickC version of the plasma routine from the CC65 samples @@ -5620,7 +5623,7 @@ main: { //SEG23 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG24 main::@2 //SEG25 [13] call makecharset - //SEG26 [95] phi from main::@2 to makecharset [phi:main::@2->makecharset] + //SEG26 [96] phi from main::@2 to makecharset [phi:main::@2->makecharset] jsr makecharset //SEG27 [14] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181] //SEG28 main::toD0181 @@ -5762,202 +5765,205 @@ doplasma: { axs #3 stx c2B //SEG86 [41] phi from doplasma::@4 to doplasma::@5 [phi:doplasma::@4->doplasma::@5] - //SEG87 [41] phi (byte) doplasma::i2#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 + //SEG87 [41] phi (byte) doplasma::i2#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:doplasma::@4->doplasma::@5#0] -- vbuxx=vbuc1 ldx #0 //SEG88 [41] phi from doplasma::@7 to doplasma::@5 [phi:doplasma::@7->doplasma::@5] - //SEG89 [41] phi (byte) doplasma::i2#4 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy + //SEG89 [41] phi (byte) doplasma::i2#2 = (byte) doplasma::i2#1 [phi:doplasma::@7->doplasma::@5#0] -- register_copy //SEG90 doplasma::@5 - //SEG91 doplasma::@6 - b6: - //SEG92 [42] (byte~) doplasma::$6 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + b5: + //SEG91 [42] (byte) doplasma::xval#0 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#2) -- vbuyy=pbuc1_derefidx_vbuxx + ldy xbuf,x + // Use experimental loop unrolling to increase the speed + //SEG92 doplasma::@6 + //SEG93 [43] (byte~) doplasma::$6 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf - //SEG93 [43] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#4) ← (byte~) doplasma::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG94 [44] *((const byte*) SCREEN1#0 + (byte) doplasma::i2#2) ← (byte~) doplasma::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1,x - //SEG94 doplasma::@6_1 - //SEG95 [44] (byte~) doplasma::$11 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG95 doplasma::@6_1 + //SEG96 [45] (byte~) doplasma::$11 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+1 - //SEG96 [45] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$11 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG97 [46] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$11 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+1*$28,x - //SEG97 doplasma::@6_2 - //SEG98 [46] (byte~) doplasma::$14 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG98 doplasma::@6_2 + //SEG99 [47] (byte~) doplasma::$14 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+2 - //SEG99 [47] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$14 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG100 [48] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$14 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+2*$28,x - //SEG100 doplasma::@6_3 - //SEG101 [48] (byte~) doplasma::$17 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG101 doplasma::@6_3 + //SEG102 [49] (byte~) doplasma::$17 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+3 - //SEG102 [49] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$17 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG103 [50] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 3*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$17 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+3*$28,x - //SEG103 doplasma::@6_4 - //SEG104 [50] (byte~) doplasma::$20 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG104 doplasma::@6_4 + //SEG105 [51] (byte~) doplasma::$20 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+4 - //SEG105 [51] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$20 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG106 [52] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$20 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+4*$28,x - //SEG106 doplasma::@6_5 - //SEG107 [52] (byte~) doplasma::$23 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG107 doplasma::@6_5 + //SEG108 [53] (byte~) doplasma::$23 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+5 - //SEG108 [53] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$23 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG109 [54] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$23 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+5*$28,x - //SEG109 doplasma::@6_6 - //SEG110 [54] (byte~) doplasma::$26 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG110 doplasma::@6_6 + //SEG111 [55] (byte~) doplasma::$26 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+6 - //SEG111 [55] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$26 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG112 [56] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 6*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$26 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+6*$28,x - //SEG112 doplasma::@6_7 - //SEG113 [56] (byte~) doplasma::$29 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG113 doplasma::@6_7 + //SEG114 [57] (byte~) doplasma::$29 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+7 - //SEG114 [57] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$29 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG115 [58] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 7*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$29 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+7*$28,x - //SEG115 doplasma::@6_8 - //SEG116 [58] (byte~) doplasma::$32 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG116 doplasma::@6_8 + //SEG117 [59] (byte~) doplasma::$32 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+8 - //SEG117 [59] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$32 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG118 [60] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 8*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$32 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+8*$28,x - //SEG118 doplasma::@6_9 - //SEG119 [60] (byte~) doplasma::$35 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG119 doplasma::@6_9 + //SEG120 [61] (byte~) doplasma::$35 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) 9) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+9 - //SEG120 [61] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$35 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG121 [62] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) 9*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$35 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+9*$28,x - //SEG121 doplasma::@6_10 - //SEG122 [62] (byte~) doplasma::$38 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG122 doplasma::@6_10 + //SEG123 [63] (byte~) doplasma::$38 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $a) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$a - //SEG123 [63] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$38 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG124 [64] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $a*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$38 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$a*$28,x - //SEG124 doplasma::@6_11 - //SEG125 [64] (byte~) doplasma::$41 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG125 doplasma::@6_11 + //SEG126 [65] (byte~) doplasma::$41 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $b) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$b - //SEG126 [65] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$41 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG127 [66] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $b*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$41 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$b*$28,x - //SEG127 doplasma::@6_12 - //SEG128 [66] (byte~) doplasma::$44 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG128 doplasma::@6_12 + //SEG129 [67] (byte~) doplasma::$44 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $c) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$c - //SEG129 [67] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$44 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG130 [68] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $c*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$44 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$c*$28,x - //SEG130 doplasma::@6_13 - //SEG131 [68] (byte~) doplasma::$47 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG131 doplasma::@6_13 + //SEG132 [69] (byte~) doplasma::$47 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $d) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$d - //SEG132 [69] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$47 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG133 [70] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $d*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$47 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$d*$28,x - //SEG133 doplasma::@6_14 - //SEG134 [70] (byte~) doplasma::$50 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG134 doplasma::@6_14 + //SEG135 [71] (byte~) doplasma::$50 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $e) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$e - //SEG135 [71] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$50 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG136 [72] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $e*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$50 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$e*$28,x - //SEG136 doplasma::@6_15 - //SEG137 [72] (byte~) doplasma::$53 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG137 doplasma::@6_15 + //SEG138 [73] (byte~) doplasma::$53 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $f) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$f - //SEG138 [73] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$53 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG139 [74] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$53 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$f*$28,x - //SEG139 doplasma::@6_16 - //SEG140 [74] (byte~) doplasma::$56 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG140 doplasma::@6_16 + //SEG141 [75] (byte~) doplasma::$56 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $10) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$10 - //SEG141 [75] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$56 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG142 [76] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$56 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$10*$28,x - //SEG142 doplasma::@6_17 - //SEG143 [76] (byte~) doplasma::$59 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG143 doplasma::@6_17 + //SEG144 [77] (byte~) doplasma::$59 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $11) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$11 - //SEG144 [77] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$59 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG145 [78] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $11*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$59 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$11*$28,x - //SEG145 doplasma::@6_18 - //SEG146 [78] (byte~) doplasma::$62 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG146 doplasma::@6_18 + //SEG147 [79] (byte~) doplasma::$62 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $12) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$12 - //SEG147 [79] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$62 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG148 [80] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $12*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$62 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$12*$28,x - //SEG148 doplasma::@6_19 - //SEG149 [80] (byte~) doplasma::$65 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG149 doplasma::@6_19 + //SEG150 [81] (byte~) doplasma::$65 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $13) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$13 - //SEG150 [81] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$65 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG151 [82] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $13*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$65 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$13*$28,x - //SEG151 doplasma::@6_20 - //SEG152 [82] (byte~) doplasma::$68 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG152 doplasma::@6_20 + //SEG153 [83] (byte~) doplasma::$68 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $14) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$14 - //SEG153 [83] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$68 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG154 [84] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $14*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$68 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$14*$28,x - //SEG154 doplasma::@6_21 - //SEG155 [84] (byte~) doplasma::$71 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG155 doplasma::@6_21 + //SEG156 [85] (byte~) doplasma::$71 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $15) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$15 - //SEG156 [85] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$71 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG157 [86] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $15*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$71 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$15*$28,x - //SEG157 doplasma::@6_22 - //SEG158 [86] (byte~) doplasma::$74 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG158 doplasma::@6_22 + //SEG159 [87] (byte~) doplasma::$74 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $16) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$16 - //SEG159 [87] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$74 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG160 [88] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $16*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$74 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$16*$28,x - //SEG160 doplasma::@6_23 - //SEG161 [88] (byte~) doplasma::$77 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG161 doplasma::@6_23 + //SEG162 [89] (byte~) doplasma::$77 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $17) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$17 - //SEG162 [89] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$77 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG163 [90] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $17*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$77 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$17*$28,x - //SEG163 doplasma::@6_24 - //SEG164 [90] (byte~) doplasma::$80 ← *((const byte[$28]) doplasma::xbuf#0 + (byte) doplasma::i2#4) + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=pbuc1_derefidx_vbuxx_plus__deref_pbuc2 - lda xbuf,x + //SEG164 doplasma::@6_24 + //SEG165 [91] (byte~) doplasma::$80 ← (byte) doplasma::xval#0 + *((const byte[$19]) doplasma::ybuf#0+(byte/signed byte/word/signed word/dword/signed dword) $18) -- vbuaa=vbuyy_plus__deref_pbuc1 + tya clc adc ybuf+$18 - //SEG165 [91] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#4) ← (byte~) doplasma::$80 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG166 [92] *((const byte*) SCREEN1#0+(byte/signed byte/word/signed word/dword/signed dword) $18*(byte/signed byte/word/signed word/dword/signed dword) $28 + (byte) doplasma::i2#2) ← (byte~) doplasma::$80 -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN1+$18*$28,x - //SEG166 doplasma::@7 - //SEG167 [92] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#4 -- vbuxx=_inc_vbuxx + //SEG167 doplasma::@7 + //SEG168 [93] (byte) doplasma::i2#1 ← ++ (byte) doplasma::i2#2 -- vbuxx=_inc_vbuxx inx - //SEG168 [93] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 + //SEG169 [94] if((byte) doplasma::i2#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto doplasma::@5 -- vbuxx_lt_vbuc1_then_la1 cpx #$28 - bcs !b6+ - jmp b6 - !b6: - //SEG169 doplasma::@return - //SEG170 [94] return + bcs !b5+ + jmp b5 + !b5: + //SEG170 doplasma::@return + //SEG171 [95] return rts xbuf: .fill $28, 0 ybuf: .fill $19, 0 } -//SEG171 makecharset +//SEG172 makecharset // Make a plasma-friendly charset where the chars are randomly filled makecharset: { .label _4 = 6 @@ -5966,80 +5972,80 @@ makecharset: { .label s = 5 .label i = 4 .label c = 2 - //SEG172 [96] call sid_rnd_init + //SEG173 [97] call sid_rnd_init jsr sid_rnd_init - //SEG173 [97] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] - //SEG174 makecharset::@10 - //SEG175 [98] call print_cls - //SEG176 [131] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] + //SEG174 [98] phi from makecharset to makecharset::@10 [phi:makecharset->makecharset::@10] + //SEG175 makecharset::@10 + //SEG176 [99] call print_cls + //SEG177 [132] phi from makecharset::@10 to print_cls [phi:makecharset::@10->print_cls] jsr print_cls - //SEG177 [99] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] - //SEG178 [99] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 + //SEG178 [100] phi from makecharset::@10 to makecharset::@1 [phi:makecharset::@10->makecharset::@1] + //SEG179 [100] phi (byte*) print_char_cursor#45 = (const byte*) print_line_cursor#0 [phi:makecharset::@10->makecharset::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta print_char_cursor+1 - //SEG179 [99] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 + //SEG180 [100] phi (word) makecharset::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@10->makecharset::@1#1] -- vwuz1=vbuc1 lda #0 sta c sta c+1 - //SEG180 [99] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] - //SEG181 [99] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy - //SEG182 [99] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy - //SEG183 makecharset::@1 + //SEG181 [100] phi from makecharset::@9 to makecharset::@1 [phi:makecharset::@9->makecharset::@1] + //SEG182 [100] phi (byte*) print_char_cursor#45 = (byte*) print_char_cursor#18 [phi:makecharset::@9->makecharset::@1#0] -- register_copy + //SEG183 [100] phi (word) makecharset::c#2 = (word) makecharset::c#1 [phi:makecharset::@9->makecharset::@1#1] -- register_copy + //SEG184 makecharset::@1 b1: - //SEG184 [100] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 + //SEG185 [101] (byte~) makecharset::$2 ← < (word) makecharset::c#2 -- vbuaa=_lo_vwuz1 lda c - //SEG185 [101] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG186 [102] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2) -- vbuz1=pbuc1_derefidx_vbuaa tay lda SINTABLE,y sta s - //SEG186 [102] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] - //SEG187 [102] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 + //SEG187 [103] phi from makecharset::@1 to makecharset::@2 [phi:makecharset::@1->makecharset::@2] + //SEG188 [103] phi (byte) makecharset::i#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@1->makecharset::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG188 [102] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] - //SEG189 [102] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy - //SEG190 makecharset::@2 + //SEG189 [103] phi from makecharset::@6 to makecharset::@2 [phi:makecharset::@6->makecharset::@2] + //SEG190 [103] phi (byte) makecharset::i#7 = (byte) makecharset::i#1 [phi:makecharset::@6->makecharset::@2#0] -- register_copy + //SEG191 makecharset::@2 b2: - //SEG191 [103] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] - //SEG192 [103] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 + //SEG192 [104] phi from makecharset::@2 to makecharset::@3 [phi:makecharset::@2->makecharset::@3] + //SEG193 [104] phi (byte) makecharset::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#0] -- vbuyy=vbuc1 ldy #0 - //SEG193 [103] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 + //SEG194 [104] phi (byte) makecharset::ii#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:makecharset::@2->makecharset::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG194 [103] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] - //SEG195 [103] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy - //SEG196 [103] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy - //SEG197 makecharset::@3 + //SEG195 [104] phi from makecharset::@4 to makecharset::@3 [phi:makecharset::@4->makecharset::@3] + //SEG196 [104] phi (byte) makecharset::b#2 = (byte) makecharset::b#3 [phi:makecharset::@4->makecharset::@3#0] -- register_copy + //SEG197 [104] phi (byte) makecharset::ii#2 = (byte) makecharset::ii#1 [phi:makecharset::@4->makecharset::@3#1] -- register_copy + //SEG198 makecharset::@3 b3: - //SEG198 [104] call sid_rnd + //SEG199 [105] call sid_rnd jsr sid_rnd - //SEG199 [105] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 - //SEG200 makecharset::@11 - //SEG201 [106] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 - //SEG202 [107] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 + //SEG200 [106] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG201 makecharset::@11 + //SEG202 [107] (byte~) makecharset::$3 ← (byte) sid_rnd::return#2 + //SEG203 [108] (byte~) makecharset::$4 ← (byte~) makecharset::$3 & (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuaa_band_vbuc1 and #$ff sta _4 - //SEG203 [108] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 + //SEG204 [109] if((byte~) makecharset::$4<=(byte) makecharset::s#0) goto makecharset::@4 -- vbuz1_le_vbuz2_then_la1 lda s cmp _4 bcs b4 - //SEG204 makecharset::@5 - //SEG205 [109] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx + //SEG205 makecharset::@5 + //SEG206 [110] (byte) makecharset::b#1 ← (byte) makecharset::b#2 | *((const byte[8]) makecharset::bittab#0 + (byte) makecharset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx tya ora bittab,x tay - //SEG206 [110] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] - //SEG207 [110] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy - //SEG208 makecharset::@4 + //SEG207 [111] phi from makecharset::@11 makecharset::@5 to makecharset::@4 [phi:makecharset::@11/makecharset::@5->makecharset::@4] + //SEG208 [111] phi (byte) makecharset::b#3 = (byte) makecharset::b#2 [phi:makecharset::@11/makecharset::@5->makecharset::@4#0] -- register_copy + //SEG209 makecharset::@4 b4: - //SEG209 [111] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx + //SEG210 [112] (byte) makecharset::ii#1 ← ++ (byte) makecharset::ii#2 -- vbuxx=_inc_vbuxx inx - //SEG210 [112] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG211 [113] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #8 bcc b3 - //SEG211 makecharset::@6 - //SEG212 [113] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG212 makecharset::@6 + //SEG213 [114] (word~) makecharset::$8 ← (word) makecharset::c#2 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda c asl sta _8 @@ -6050,7 +6056,7 @@ makecharset: { rol _8+1 asl _8 rol _8+1 - //SEG213 [114] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 + //SEG214 [115] (word~) makecharset::$9 ← (word~) makecharset::$8 + (byte) makecharset::i#7 -- vwuz1=vwuz1_plus_vbuz2 lda i clc adc _9 @@ -6058,7 +6064,7 @@ makecharset: { bcc !+ inc _9+1 !: - //SEG214 [115] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy + //SEG215 [116] *((const byte*) CHARSET#0 + (word~) makecharset::$9) ← (byte) makecharset::b#3 -- pbuc1_derefidx_vwuz1=vbuyy tya sta !v++1 lda #makecharset::@8] - //SEG221 makecharset::@8 - //SEG222 [121] call print_char + //SEG221 [121] phi from makecharset::@7 to makecharset::@8 [phi:makecharset::@7->makecharset::@8] + //SEG222 makecharset::@8 + //SEG223 [122] call print_char jsr print_char - //SEG223 [122] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] - //SEG224 [122] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy - //SEG225 makecharset::@9 + //SEG224 [123] phi from makecharset::@7 makecharset::@8 to makecharset::@9 [phi:makecharset::@7/makecharset::@8->makecharset::@9] + //SEG225 [123] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#45 [phi:makecharset::@7/makecharset::@8->makecharset::@9#0] -- register_copy + //SEG226 makecharset::@9 b9: - //SEG226 [123] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 + //SEG227 [124] (word) makecharset::c#1 ← ++ (word) makecharset::c#2 -- vwuz1=_inc_vwuz1 inc c bne !+ inc c+1 !: - //SEG227 [124] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG228 [125] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1 -- vwuz1_lt_vwuc1_then_la1 lda c+1 cmp #>$100 bcc b1 @@ -6109,85 +6115,85 @@ makecharset: { jmp b1 !b1: !: - //SEG228 makecharset::@return - //SEG229 [125] return + //SEG229 makecharset::@return + //SEG230 [126] return rts bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80 } -//SEG230 print_char +//SEG231 print_char // Print a single char print_char: { .const ch = '.' - //SEG231 [126] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 + //SEG232 [127] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (print_char_cursor),y - //SEG232 [127] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 + //SEG233 [128] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG233 print_char::@return - //SEG234 [128] return + //SEG234 print_char::@return + //SEG235 [129] return rts } -//SEG235 sid_rnd +//SEG236 sid_rnd // Get a random number from the SID voice 3, // Must be initialized with sid_rnd_init() sid_rnd: { - //SEG236 [129] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG237 [130] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG237 sid_rnd::@return - //SEG238 [130] return + //SEG238 sid_rnd::@return + //SEG239 [131] return rts } -//SEG239 print_cls +//SEG240 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG240 [132] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG241 [132] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG241 [133] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG242 [133] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #print_line_cursor sta sc+1 - //SEG242 [132] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG243 [132] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG244 print_cls::@1 + //SEG243 [133] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG244 [133] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG245 print_cls::@1 b1: - //SEG245 [133] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG246 [134] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG246 [134] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG247 [135] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG247 [135] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG248 [136] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>print_line_cursor+$3e8 bne b1 lda sc cmp #$ffff sta SID_VOICE3_FREQ+1 - //SEG252 [138] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG253 [139] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG253 sid_rnd_init::@return - //SEG254 [139] return + //SEG254 sid_rnd_init::@return + //SEG255 [140] return rts } .pc = SINTABLE "SINTABLE" diff --git a/src/test/ref/examples/plasma/plasma-unroll.sym b/src/test/ref/examples/plasma/plasma-unroll.sym index 608a2a329..79f878b5a 100644 --- a/src/test/ref/examples/plasma/plasma-unroll.sym +++ b/src/test/ref/examples/plasma/plasma-unroll.sym @@ -112,16 +112,16 @@ (byte) YELLOW (byte) c1A (byte) c1A#1 c1A zp ZP_BYTE:4 1.3636363636363638 -(byte) c1A#3 c1A zp ZP_BYTE:4 0.1911764705882353 +(byte) c1A#3 c1A zp ZP_BYTE:4 0.18840579710144925 (byte) c1B (byte) c1B#1 c1B zp ZP_BYTE:5 1.25 -(byte) c1B#3 c1B zp ZP_BYTE:5 0.19402985074626866 +(byte) c1B#3 c1B zp ZP_BYTE:5 0.1911764705882353 (byte) c2A (byte) c2A#1 c2A zp ZP_BYTE:6 0.6818181818181819 -(byte) c2A#3 c2A zp ZP_BYTE:6 0.22807017543859648 +(byte) c2A#3 c2A zp ZP_BYTE:6 0.22413793103448276 (byte) c2B (byte) c2B#1 c2B zp ZP_BYTE:7 0.6521739130434783 -(byte) c2B#3 c2B zp ZP_BYTE:7 0.23214285714285715 +(byte) c2B#3 c2B zp ZP_BYTE:7 0.22807017543859648 (void()) doplasma((byte*) doplasma::screen) (byte~) doplasma::$0 reg byte a 202.0 (byte~) doplasma::$11 reg byte a 202.0 @@ -206,11 +206,13 @@ (byte) doplasma::i1#2 i1 zp ZP_BYTE:10 60.599999999999994 (byte) doplasma::i2 (byte) doplasma::i2#1 reg byte x 151.5 -(byte) doplasma::i2#4 reg byte x 102.98039215686288 +(byte) doplasma::i2#2 reg byte x 54.3846153846154 (byte) doplasma::ii (byte*) doplasma::screen (byte[$28]) doplasma::xbuf (const byte[$28]) doplasma::xbuf#0 xbuf = { fill( $28, 0) } +(byte) doplasma::xval +(byte) doplasma::xval#0 reg byte y 53.59183673469388 (byte[$19]) doplasma::ybuf (const byte[$19]) doplasma::ybuf#0 ybuf = { fill( $19, 0) } (void()) main() @@ -307,12 +309,13 @@ zp ZP_BYTE:7 [ c2B#1 c2B#3 ] zp ZP_BYTE:8 [ doplasma::c1a#2 doplasma::c1a#0 doplasma::c1a#1 doplasma::c2a#2 doplasma::c2a#0 doplasma::c2a#1 ] zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 doplasma::c2b#2 doplasma::c2b#0 doplasma::c2b#1 ] zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 doplasma::i1#2 doplasma::i1#1 ] -reg byte x [ doplasma::i2#4 doplasma::i2#1 ] +reg byte x [ doplasma::i2#2 doplasma::i2#1 ] zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ] reg byte x [ makecharset::ii#2 makecharset::ii#1 ] reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ] reg byte a [ doplasma::$0 ] reg byte a [ doplasma::$2 ] +reg byte y [ doplasma::xval#0 ] reg byte a [ doplasma::$6 ] reg byte a [ doplasma::$11 ] reg byte a [ doplasma::$14 ]