From 267d0067526c901ee9ebf3e1cad1fc112732a14a Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Fri, 19 Jan 2018 00:59:51 +0100 Subject: [PATCH] Improved bigscroll by inlining screen lines in array assignments. --- .../dk/camelot64/kickc/test/kc/scrollbig.kc | 24 +- .../dk/camelot64/kickc/test/ref/scrollbig.asm | 40 +- .../dk/camelot64/kickc/test/ref/scrollbig.cfg | 16 +- .../dk/camelot64/kickc/test/ref/scrollbig.log | 958 +++++++++--------- .../dk/camelot64/kickc/test/ref/scrollbig.sym | 16 - 5 files changed, 509 insertions(+), 545 deletions(-) diff --git a/src/test/java/dk/camelot64/kickc/test/kc/scrollbig.kc b/src/test/java/dk/camelot64/kickc/test/kc/scrollbig.kc index b68b827bd..1f01597e5 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/scrollbig.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/scrollbig.kc @@ -71,23 +71,15 @@ byte next_char() { void scroll_hard() { // Hard scroll - byte* line0 = SCREEN+40*0; - byte* line1 = SCREEN+40*1; - byte* line2 = SCREEN+40*2; - byte* line3 = SCREEN+40*3; - byte* line4 = SCREEN+40*4; - byte* line5 = SCREEN+40*5; - byte* line6 = SCREEN+40*6; - byte* line7 = SCREEN+40*7; for(byte i=0;i!=39;i++) { - line0[i]=line0[i+1]; - line1[i]=line1[i+1]; - line2[i]=line2[i+1]; - line3[i]=line3[i+1]; - line4[i]=line4[i+1]; - line5[i]=line5[i+1]; - line6[i]=line6[i+1]; - line7[i]=line7[i+1]; + (SCREEN+40*0)[i]=(SCREEN+40*0)[i+1]; + (SCREEN+40*1)[i]=(SCREEN+40*1)[i+1]; + (SCREEN+40*2)[i]=(SCREEN+40*2)[i+1]; + (SCREEN+40*3)[i]=(SCREEN+40*3)[i+1]; + (SCREEN+40*4)[i]=(SCREEN+40*4)[i+1]; + (SCREEN+40*5)[i]=(SCREEN+40*5)[i+1]; + (SCREEN+40*6)[i]=(SCREEN+40*6)[i+1]; + (SCREEN+40*7)[i]=(SCREEN+40*7)[i+1]; } } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.asm b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.asm index 521bff5f9..e93b6c080 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.asm @@ -113,32 +113,24 @@ scroll_bit: { rts } scroll_hard: { - .const line0 = SCREEN+$28*0 - .const line1 = SCREEN+$28*1 - .const line2 = SCREEN+$28*2 - .const line3 = SCREEN+$28*3 - .const line4 = SCREEN+$28*4 - .const line5 = SCREEN+$28*5 - .const line6 = SCREEN+$28*6 - .const line7 = SCREEN+$28*7 ldx #0 b1: - lda line0+1,x - sta line0,x - lda line1+1,x - sta line1,x - lda line2+1,x - sta line2,x - lda line3+1,x - sta line3,x - lda line4+1,x - sta line4,x - lda line5+1,x - sta line5,x - lda line6+1,x - sta line6,x - lda line7+1,x - sta line7,x + lda SCREEN+$28*0+1,x + sta SCREEN+$28*0,x + lda SCREEN+$28*1+1,x + sta SCREEN+$28*1,x + lda SCREEN+$28*2+1,x + sta SCREEN+$28*2,x + lda SCREEN+$28*3+1,x + sta SCREEN+$28*3,x + lda SCREEN+$28*4+1,x + sta SCREEN+$28*4,x + lda SCREEN+$28*5+1,x + sta SCREEN+$28*5,x + lda SCREEN+$28*6+1,x + sta SCREEN+$28*6,x + lda SCREEN+$28*7+1,x + sta SCREEN+$28*7,x inx cpx #$27 bne b1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg index ede15fa8e..8cf1eaddc 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg @@ -104,14 +104,14 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 [48] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [49] *((const byte*) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [50] *((const byte*) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [51] *((const byte*) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [52] *((const byte*) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [53] *((const byte*) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [54] *((const byte*) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [55] *((const byte*) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [56] *((const byte*) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [49] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) to:scroll_hard::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log index 3acf79853..6b1563733 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -72,23 +72,15 @@ byte next_char() { void scroll_hard() { // Hard scroll - byte* line0 = SCREEN+40*0; - byte* line1 = SCREEN+40*1; - byte* line2 = SCREEN+40*2; - byte* line3 = SCREEN+40*3; - byte* line4 = SCREEN+40*4; - byte* line5 = SCREEN+40*5; - byte* line6 = SCREEN+40*6; - byte* line7 = SCREEN+40*7; for(byte i=0;i!=39;i++) { - line0[i]=line0[i+1]; - line1[i]=line1[i+1]; - line2[i]=line2[i+1]; - line3[i]=line3[i+1]; - line4[i]=line4[i+1]; - line5[i]=line5[i+1]; - line6[i]=line6[i+1]; - line7[i]=line7[i+1]; + (SCREEN+40*0)[i]=(SCREEN+40*0)[i+1]; + (SCREEN+40*1)[i]=(SCREEN+40*1)[i+1]; + (SCREEN+40*2)[i]=(SCREEN+40*2)[i+1]; + (SCREEN+40*3)[i]=(SCREEN+40*3)[i+1]; + (SCREEN+40*4)[i]=(SCREEN+40*4)[i+1]; + (SCREEN+40*5)[i]=(SCREEN+40*5)[i+1]; + (SCREEN+40*6)[i]=(SCREEN+40*6)[i+1]; + (SCREEN+40*7)[i]=(SCREEN+40*7)[i+1]; } } @@ -203,51 +195,59 @@ next_char::@return: return (byte) next_char::return endproc // next_char() proc (void()) scroll_hard() - (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 - (byte*) scroll_hard::line0 ← (byte*~) scroll_hard::$1 - (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 - (byte*) scroll_hard::line1 ← (byte*~) scroll_hard::$3 - (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$4 - (byte*) scroll_hard::line2 ← (byte*~) scroll_hard::$5 - (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$6 - (byte*) scroll_hard::line3 ← (byte*~) scroll_hard::$7 - (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$8 - (byte*) scroll_hard::line4 ← (byte*~) scroll_hard::$9 - (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$10 - (byte*) scroll_hard::line5 ← (byte*~) scroll_hard::$11 - (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$12 - (byte*) scroll_hard::line6 ← (byte*~) scroll_hard::$13 - (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$14 - (byte*) scroll_hard::line7 ← (byte*~) scroll_hard::$15 (byte) scroll_hard::i ← (byte/signed byte/word/signed word) 0 scroll_hard::@1: - (byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line0 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line0 + (byte/word~) scroll_hard::$16) - (byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line1 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line1 + (byte/word~) scroll_hard::$17) - (byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line2 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line2 + (byte/word~) scroll_hard::$18) + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/word~) scroll_hard::$4 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$1 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$3 + (byte/word~) scroll_hard::$4) + (byte/signed byte/word/signed word~) scroll_hard::$5 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$6 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$5 + (byte/signed byte/word/signed word~) scroll_hard::$7 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$8 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$7 + (byte/word~) scroll_hard::$9 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$6 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$8 + (byte/word~) scroll_hard::$9) + (byte/signed byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$10 + (byte/signed byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$12 + (byte/word~) scroll_hard::$14 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$11 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$13 + (byte/word~) scroll_hard::$14) + (byte/signed byte/word/signed word~) scroll_hard::$15 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$16 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$15 + (byte/signed byte/word/signed word~) scroll_hard::$17 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$18 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$17 (byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line3 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line3 + (byte/word~) scroll_hard::$19) - (byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line4 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line4 + (byte/word~) scroll_hard::$20) - (byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line5 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line5 + (byte/word~) scroll_hard::$21) - (byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line6 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line6 + (byte/word~) scroll_hard::$22) - (byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line7 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line7 + (byte/word~) scroll_hard::$23) + *((byte*~) scroll_hard::$16 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$18 + (byte/word~) scroll_hard::$19) + (byte/word/signed word~) scroll_hard::$20 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$21 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$20 + (byte/word/signed word~) scroll_hard::$22 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$23 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$22 + (byte/word~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$21 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$23 + (byte/word~) scroll_hard::$24) + (byte/word/signed word~) scroll_hard::$25 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$26 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$25 + (byte/word/signed word~) scroll_hard::$27 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$28 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$27 + (byte/word~) scroll_hard::$29 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$26 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$28 + (byte/word~) scroll_hard::$29) + (byte/word/signed word~) scroll_hard::$30 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$31 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$30 + (byte/word/signed word~) scroll_hard::$32 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$33 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$32 + (byte/word~) scroll_hard::$34 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$31 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$33 + (byte/word~) scroll_hard::$34) + (word/signed word~) scroll_hard::$35 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$36 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$35 + (word/signed word~) scroll_hard::$37 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$38 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$37 + (byte/word~) scroll_hard::$39 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$36 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$38 + (byte/word~) scroll_hard::$39) (byte) scroll_hard::i ← ++ (byte) scroll_hard::i - (boolean~) scroll_hard::$24 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 - if((boolean~) scroll_hard::$24) goto scroll_hard::@1 + (boolean~) scroll_hard::$40 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 + if((boolean~) scroll_hard::$40) goto scroll_hard::@1 scroll_hard::@return: return endproc // scroll_hard() @@ -328,40 +328,48 @@ SYMBOLS (void()) scroll_hard() (byte/signed byte/word/signed word~) scroll_hard::$0 (byte*~) scroll_hard::$1 -(byte/word/signed word~) scroll_hard::$10 +(byte/signed byte/word/signed word~) scroll_hard::$10 (byte*~) scroll_hard::$11 -(byte/word/signed word~) scroll_hard::$12 +(byte/signed byte/word/signed word~) scroll_hard::$12 (byte*~) scroll_hard::$13 -(word/signed word~) scroll_hard::$14 -(byte*~) scroll_hard::$15 -(byte/word~) scroll_hard::$16 -(byte/word~) scroll_hard::$17 -(byte/word~) scroll_hard::$18 +(byte/word~) scroll_hard::$14 +(byte/signed byte/word/signed word~) scroll_hard::$15 +(byte*~) scroll_hard::$16 +(byte/signed byte/word/signed word~) scroll_hard::$17 +(byte*~) scroll_hard::$18 (byte/word~) scroll_hard::$19 (byte/signed byte/word/signed word~) scroll_hard::$2 -(byte/word~) scroll_hard::$20 -(byte/word~) scroll_hard::$21 -(byte/word~) scroll_hard::$22 -(byte/word~) scroll_hard::$23 -(boolean~) scroll_hard::$24 +(byte/word/signed word~) scroll_hard::$20 +(byte*~) scroll_hard::$21 +(byte/word/signed word~) scroll_hard::$22 +(byte*~) scroll_hard::$23 +(byte/word~) scroll_hard::$24 +(byte/word/signed word~) scroll_hard::$25 +(byte*~) scroll_hard::$26 +(byte/word/signed word~) scroll_hard::$27 +(byte*~) scroll_hard::$28 +(byte/word~) scroll_hard::$29 (byte*~) scroll_hard::$3 -(byte/signed byte/word/signed word~) scroll_hard::$4 -(byte*~) scroll_hard::$5 -(byte/signed byte/word/signed word~) scroll_hard::$6 -(byte*~) scroll_hard::$7 -(byte/word/signed word~) scroll_hard::$8 -(byte*~) scroll_hard::$9 +(byte/word/signed word~) scroll_hard::$30 +(byte*~) scroll_hard::$31 +(byte/word/signed word~) scroll_hard::$32 +(byte*~) scroll_hard::$33 +(byte/word~) scroll_hard::$34 +(word/signed word~) scroll_hard::$35 +(byte*~) scroll_hard::$36 +(word/signed word~) scroll_hard::$37 +(byte*~) scroll_hard::$38 +(byte/word~) scroll_hard::$39 +(byte/word~) scroll_hard::$4 +(boolean~) scroll_hard::$40 +(byte/signed byte/word/signed word~) scroll_hard::$5 +(byte*~) scroll_hard::$6 +(byte/signed byte/word/signed word~) scroll_hard::$7 +(byte*~) scroll_hard::$8 +(byte/word~) scroll_hard::$9 (label) scroll_hard::@1 (label) scroll_hard::@return (byte) scroll_hard::i -(byte*) scroll_hard::line0 -(byte*) scroll_hard::line1 -(byte*) scroll_hard::line2 -(byte*) scroll_hard::line3 -(byte*) scroll_hard::line4 -(byte*) scroll_hard::line5 -(byte*) scroll_hard::line6 -(byte*) scroll_hard::line7 (void()) scroll_soft() (boolean~) scroll_soft::$0 (boolean~) scroll_soft::$1 @@ -512,52 +520,60 @@ next_char::@3: scope:[next_char] from @4: scope:[] from @3 to:@5 scroll_hard: scope:[scroll_hard] from - (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 - (byte*) scroll_hard::line0 ← (byte*~) scroll_hard::$1 - (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 - (byte*) scroll_hard::line1 ← (byte*~) scroll_hard::$3 - (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$4 - (byte*) scroll_hard::line2 ← (byte*~) scroll_hard::$5 - (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$6 - (byte*) scroll_hard::line3 ← (byte*~) scroll_hard::$7 - (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$8 - (byte*) scroll_hard::line4 ← (byte*~) scroll_hard::$9 - (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$10 - (byte*) scroll_hard::line5 ← (byte*~) scroll_hard::$11 - (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$12 - (byte*) scroll_hard::line6 ← (byte*~) scroll_hard::$13 - (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$14 - (byte*) scroll_hard::line7 ← (byte*~) scroll_hard::$15 (byte) scroll_hard::i ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - (byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line0 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line0 + (byte/word~) scroll_hard::$16) - (byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line1 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line1 + (byte/word~) scroll_hard::$17) - (byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line2 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line2 + (byte/word~) scroll_hard::$18) + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/word~) scroll_hard::$4 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$1 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$3 + (byte/word~) scroll_hard::$4) + (byte/signed byte/word/signed word~) scroll_hard::$5 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$6 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$5 + (byte/signed byte/word/signed word~) scroll_hard::$7 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$8 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$7 + (byte/word~) scroll_hard::$9 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$6 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$8 + (byte/word~) scroll_hard::$9) + (byte/signed byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$10 + (byte/signed byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$12 + (byte/word~) scroll_hard::$14 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$11 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$13 + (byte/word~) scroll_hard::$14) + (byte/signed byte/word/signed word~) scroll_hard::$15 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$16 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$15 + (byte/signed byte/word/signed word~) scroll_hard::$17 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$18 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) scroll_hard::$17 (byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line3 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line3 + (byte/word~) scroll_hard::$19) - (byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line4 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line4 + (byte/word~) scroll_hard::$20) - (byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line5 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line5 + (byte/word~) scroll_hard::$21) - (byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line6 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line6 + (byte/word~) scroll_hard::$22) - (byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line7 + (byte) scroll_hard::i) ← *((byte*) scroll_hard::line7 + (byte/word~) scroll_hard::$23) + *((byte*~) scroll_hard::$16 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$18 + (byte/word~) scroll_hard::$19) + (byte/word/signed word~) scroll_hard::$20 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$21 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$20 + (byte/word/signed word~) scroll_hard::$22 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$23 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$22 + (byte/word~) scroll_hard::$24 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$21 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$23 + (byte/word~) scroll_hard::$24) + (byte/word/signed word~) scroll_hard::$25 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$26 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$25 + (byte/word/signed word~) scroll_hard::$27 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$28 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$27 + (byte/word~) scroll_hard::$29 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$26 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$28 + (byte/word~) scroll_hard::$29) + (byte/word/signed word~) scroll_hard::$30 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$31 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$30 + (byte/word/signed word~) scroll_hard::$32 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$33 ← (byte*) SCREEN + (byte/word/signed word~) scroll_hard::$32 + (byte/word~) scroll_hard::$34 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$31 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$33 + (byte/word~) scroll_hard::$34) + (word/signed word~) scroll_hard::$35 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$36 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$35 + (word/signed word~) scroll_hard::$37 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$38 ← (byte*) SCREEN + (word/signed word~) scroll_hard::$37 + (byte/word~) scroll_hard::$39 ← (byte) scroll_hard::i + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$36 + (byte) scroll_hard::i) ← *((byte*~) scroll_hard::$38 + (byte/word~) scroll_hard::$39) (byte) scroll_hard::i ← ++ (byte) scroll_hard::i - (boolean~) scroll_hard::$24 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 - if((boolean~) scroll_hard::$24) goto scroll_hard::@1 + (boolean~) scroll_hard::$40 ← (byte) scroll_hard::i != (byte/signed byte/word/signed word) 39 + if((boolean~) scroll_hard::$40) goto scroll_hard::@1 to:scroll_hard::@2 scroll_hard::@2: scope:[scroll_hard] from scroll_hard::@1 to:scroll_hard::@return @@ -656,7 +672,7 @@ main: scope:[main] from @6 main::@7: scope:[main] from main (byte*) TEXT#14 ← phi( main/(byte*) TEXT#15 ) (byte*) CHARGEN#12 ← phi( main/(byte*) CHARGEN#13 ) - (byte*) SCREEN#18 ← phi( main/(byte*) SCREEN#1 ) + (byte*) SCREEN#19 ← phi( main/(byte*) SCREEN#1 ) (byte*) PROCPORT#16 ← phi( main/(byte*) PROCPORT#17 ) (byte*) SCROLL#9 ← phi( main/(byte*) SCROLL#10 ) (byte*) current_chargen#30 ← phi( main/(byte*) current_chargen#31 ) @@ -669,7 +685,7 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 (byte*) TEXT#13 ← phi( main::@8/(byte*) TEXT#16 ) (byte*) CHARGEN#11 ← phi( main::@8/(byte*) CHARGEN#14 ) - (byte*) SCREEN#17 ← phi( main::@8/(byte*) SCREEN#19 ) + (byte*) SCREEN#18 ← phi( main::@8/(byte*) SCREEN#20 ) (byte*) PROCPORT#15 ← phi( main::@8/(byte*) PROCPORT#18 ) (byte*) SCROLL#8 ← phi( main::@8/(byte*) SCROLL#11 ) (byte*) current_chargen#29 ← phi( main::@8/(byte*) current_chargen#0 ) @@ -682,7 +698,7 @@ main::@1: scope:[main] from main::@8 main::@2: scope:[main] from main::@1 main::@2 main::@7 (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#13 main::@2/(byte*) TEXT#12 main::@7/(byte*) TEXT#14 ) (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#11 main::@2/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#12 ) - (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#17 main::@2/(byte*) SCREEN#16 main::@7/(byte*) SCREEN#18 ) + (byte*) SCREEN#17 ← phi( main::@1/(byte*) SCREEN#18 main::@2/(byte*) SCREEN#17 main::@7/(byte*) SCREEN#19 ) (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#15 main::@2/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#16 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#8 main::@2/(byte*) SCROLL#7 main::@7/(byte*) SCROLL#9 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#29 main::@2/(byte*) current_chargen#27 main::@7/(byte*) current_chargen#30 ) @@ -697,7 +713,7 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 main::@3: scope:[main] from main::@2 main::@3 (byte*) TEXT#11 ← phi( main::@2/(byte*) TEXT#12 main::@3/(byte*) TEXT#11 ) (byte*) CHARGEN#9 ← phi( main::@2/(byte*) CHARGEN#10 main::@3/(byte*) CHARGEN#9 ) - (byte*) SCREEN#15 ← phi( main::@2/(byte*) SCREEN#16 main::@3/(byte*) SCREEN#15 ) + (byte*) SCREEN#16 ← phi( main::@2/(byte*) SCREEN#17 main::@3/(byte*) SCREEN#16 ) (byte*) PROCPORT#13 ← phi( main::@2/(byte*) PROCPORT#14 main::@3/(byte*) PROCPORT#13 ) (byte*) SCROLL#6 ← phi( main::@2/(byte*) SCROLL#7 main::@3/(byte*) SCROLL#6 ) (byte*) current_chargen#22 ← phi( main::@2/(byte*) current_chargen#27 main::@3/(byte*) current_chargen#22 ) @@ -712,7 +728,7 @@ main::@3: scope:[main] from main::@2 main::@3 main::@5: scope:[main] from main::@3 (byte*) TEXT#10 ← phi( main::@3/(byte*) TEXT#11 ) (byte*) CHARGEN#8 ← phi( main::@3/(byte*) CHARGEN#9 ) - (byte*) SCREEN#14 ← phi( main::@3/(byte*) SCREEN#15 ) + (byte*) SCREEN#15 ← phi( main::@3/(byte*) SCREEN#16 ) (byte*) PROCPORT#12 ← phi( main::@3/(byte*) PROCPORT#13 ) (byte*) RASTER#8 ← phi( main::@3/(byte*) RASTER#2 ) (byte*) SCROLL#4 ← phi( main::@3/(byte*) SCROLL#6 ) @@ -727,7 +743,7 @@ main::@5: scope:[main] from main::@3 main::@8: scope:[main] from main::@5 (byte*) TEXT#16 ← phi( main::@5/(byte*) TEXT#10 ) (byte*) CHARGEN#14 ← phi( main::@5/(byte*) CHARGEN#8 ) - (byte*) SCREEN#19 ← phi( main::@5/(byte*) SCREEN#14 ) + (byte*) SCREEN#20 ← phi( main::@5/(byte*) SCREEN#15 ) (byte*) PROCPORT#18 ← phi( main::@5/(byte*) PROCPORT#12 ) (byte*) SCROLL#11 ← phi( main::@5/(byte*) SCROLL#4 ) (byte*) RASTER#6 ← phi( main::@5/(byte*) RASTER#8 ) @@ -759,7 +775,7 @@ main::@return: scope:[main] from main::@8 (byte*) SCROLL#15 ← phi( @begin/(byte*) SCROLL#0 ) (byte*) BGCOL#11 ← phi( @begin/(byte*) BGCOL#0 ) (byte*) RASTER#11 ← phi( @begin/(byte*) RASTER#0 ) - (byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 ) + (byte*) SCREEN#14 ← phi( @begin/(byte*) SCREEN#0 ) (byte*) TEXT#5 ← phi( @begin/(byte*) TEXT#0 ) (byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 ) (byte) scroll#2 ← (byte/signed byte/word/signed word) 7 @@ -767,7 +783,7 @@ main::@return: scope:[main] from main::@8 scroll_soft: scope:[scroll_soft] from main::@5 (byte*) TEXT#9 ← phi( main::@5/(byte*) TEXT#10 ) (byte*) CHARGEN#7 ← phi( main::@5/(byte*) CHARGEN#8 ) - (byte*) SCREEN#12 ← phi( main::@5/(byte*) SCREEN#14 ) + (byte*) SCREEN#13 ← phi( main::@5/(byte*) SCREEN#15 ) (byte*) PROCPORT#11 ← phi( main::@5/(byte*) PROCPORT#12 ) (byte*) current_chargen#23 ← phi( main::@5/(byte*) current_chargen#15 ) (byte*) nxt#28 ← phi( main::@5/(byte*) nxt#21 ) @@ -790,7 +806,7 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 scroll_soft::@2: scope:[scroll_soft] from scroll_soft (byte*) TEXT#8 ← phi( scroll_soft/(byte*) TEXT#9 ) (byte*) CHARGEN#6 ← phi( scroll_soft/(byte*) CHARGEN#7 ) - (byte*) SCREEN#9 ← phi( scroll_soft/(byte*) SCREEN#12 ) + (byte*) SCREEN#10 ← phi( scroll_soft/(byte*) SCREEN#13 ) (byte*) PROCPORT#9 ← phi( scroll_soft/(byte*) PROCPORT#11 ) (byte*) SCROLL#5 ← phi( scroll_soft/(byte*) SCROLL#2 ) (byte*) current_chargen#16 ← phi( scroll_soft/(byte*) current_chargen#23 ) @@ -826,7 +842,7 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 (byte*) BGCOL#10 ← phi( @1/(byte*) BGCOL#11 ) (byte*) RASTER#10 ← phi( @1/(byte*) RASTER#11 ) (byte) scroll#19 ← phi( @1/(byte) scroll#2 ) - (byte*) SCREEN#11 ← phi( @1/(byte*) SCREEN#13 ) + (byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#14 ) (byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) current_chargen#4 ← (byte*) CHARGEN#1 @@ -837,7 +853,7 @@ scroll_bit: scope:[scroll_bit] from scroll_soft::@2 (byte*) current_chargen#28 ← phi( scroll_soft::@2/(byte*) current_chargen#16 ) (byte*) CHARGEN#5 ← phi( scroll_soft::@2/(byte*) CHARGEN#6 ) (byte*) nxt#29 ← phi( scroll_soft::@2/(byte*) nxt#22 ) - (byte*) SCREEN#6 ← phi( scroll_soft::@2/(byte*) SCREEN#9 ) + (byte*) SCREEN#7 ← phi( scroll_soft::@2/(byte*) SCREEN#10 ) (byte*) PROCPORT#5 ← phi( scroll_soft::@2/(byte*) PROCPORT#9 ) (byte) current_bit#13 ← phi( scroll_soft::@2/(byte) current_bit#18 ) (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word) 1 @@ -850,7 +866,7 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 (byte*) nxt#38 ← phi( scroll_bit/(byte*) nxt#29 scroll_bit::@8/(byte*) nxt#4 ) (byte) current_bit#26 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) (byte*) current_chargen#24 ← phi( scroll_bit/(byte*) current_chargen#28 scroll_bit::@8/(byte*) current_chargen#5 ) - (byte*) SCREEN#5 ← phi( scroll_bit/(byte*) SCREEN#6 scroll_bit::@8/(byte*) SCREEN#7 ) + (byte*) SCREEN#5 ← phi( scroll_bit/(byte*) SCREEN#7 scroll_bit::@8/(byte*) SCREEN#8 ) (byte*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#5 scroll_bit::@8/(byte*) PROCPORT#6 ) call scroll_hard param-assignment to:scroll_bit::@7 @@ -868,7 +884,7 @@ scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 (byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit - (byte*) SCREEN#10 ← phi( scroll_bit/(byte*) SCREEN#6 ) + (byte*) SCREEN#11 ← phi( scroll_bit/(byte*) SCREEN#7 ) (byte*) PROCPORT#10 ← phi( scroll_bit/(byte*) PROCPORT#5 ) (byte*) TEXT#6 ← phi( scroll_bit/(byte*) TEXT#7 ) (byte*) CHARGEN#4 ← phi( scroll_bit/(byte*) CHARGEN#5 ) @@ -877,7 +893,7 @@ scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte) next_char::return#0 ← (byte) next_char::return#2 to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 - (byte*) SCREEN#7 ← phi( scroll_bit::@4/(byte*) SCREEN#10 ) + (byte*) SCREEN#8 ← phi( scroll_bit::@4/(byte*) SCREEN#11 ) (byte*) PROCPORT#6 ← phi( scroll_bit::@4/(byte*) PROCPORT#10 ) (byte*) CHARGEN#2 ← phi( scroll_bit::@4/(byte*) CHARGEN#4 ) (byte*) nxt#15 ← phi( scroll_bit::@4/(byte*) nxt#9 ) @@ -955,7 +971,7 @@ scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 (byte*) current_chargen#26 ← phi( @2/(byte*) current_chargen#4 ) (byte) current_bit#28 ← phi( @2/(byte) current_bit#4 ) (byte) scroll#17 ← phi( @2/(byte) scroll#19 ) - (byte*) SCREEN#8 ← phi( @2/(byte*) SCREEN#11 ) + (byte*) SCREEN#9 ← phi( @2/(byte*) SCREEN#12 ) (byte*) TEXT#1 ← phi( @2/(byte*) TEXT#3 ) (byte*) nxt#6 ← (byte*) TEXT#1 to:@6 @@ -986,62 +1002,63 @@ next_char::@return: scope:[next_char] from next_char::@1 return to:@return scroll_hard: scope:[scroll_hard] from scroll_bit::@1 - (byte*) SCREEN#3 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) - (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 - (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$0 - (byte*) scroll_hard::line0#0 ← (byte*~) scroll_hard::$1 - (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 - (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$2 - (byte*) scroll_hard::line1#0 ← (byte*~) scroll_hard::$3 - (byte/signed byte/word/signed word~) scroll_hard::$4 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 - (byte*~) scroll_hard::$5 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$4 - (byte*) scroll_hard::line2#0 ← (byte*~) scroll_hard::$5 - (byte/signed byte/word/signed word~) scroll_hard::$6 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 - (byte*~) scroll_hard::$7 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$6 - (byte*) scroll_hard::line3#0 ← (byte*~) scroll_hard::$7 - (byte/word/signed word~) scroll_hard::$8 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 - (byte*~) scroll_hard::$9 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$8 - (byte*) scroll_hard::line4#0 ← (byte*~) scroll_hard::$9 - (byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 - (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$10 - (byte*) scroll_hard::line5#0 ← (byte*~) scroll_hard::$11 - (byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 - (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$12 - (byte*) scroll_hard::line6#0 ← (byte*~) scroll_hard::$13 - (word/signed word~) scroll_hard::$14 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 - (byte*~) scroll_hard::$15 ← (byte*) SCREEN#3 + (word/signed word~) scroll_hard::$14 - (byte*) scroll_hard::line7#0 ← (byte*~) scroll_hard::$15 + (byte*) SCREEN#6 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) (byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - (byte*) scroll_hard::line7#1 ← phi( scroll_hard/(byte*) scroll_hard::line7#0 scroll_hard::@1/(byte*) scroll_hard::line7#1 ) - (byte*) scroll_hard::line6#1 ← phi( scroll_hard/(byte*) scroll_hard::line6#0 scroll_hard::@1/(byte*) scroll_hard::line6#1 ) - (byte*) scroll_hard::line5#1 ← phi( scroll_hard/(byte*) scroll_hard::line5#0 scroll_hard::@1/(byte*) scroll_hard::line5#1 ) - (byte*) scroll_hard::line4#1 ← phi( scroll_hard/(byte*) scroll_hard::line4#0 scroll_hard::@1/(byte*) scroll_hard::line4#1 ) - (byte*) scroll_hard::line3#1 ← phi( scroll_hard/(byte*) scroll_hard::line3#0 scroll_hard::@1/(byte*) scroll_hard::line3#1 ) - (byte*) scroll_hard::line2#1 ← phi( scroll_hard/(byte*) scroll_hard::line2#0 scroll_hard::@1/(byte*) scroll_hard::line2#1 ) - (byte*) scroll_hard::line1#1 ← phi( scroll_hard/(byte*) scroll_hard::line1#0 scroll_hard::@1/(byte*) scroll_hard::line1#1 ) - (byte*) scroll_hard::line0#1 ← phi( scroll_hard/(byte*) scroll_hard::line0#0 scroll_hard::@1/(byte*) scroll_hard::line0#1 ) (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) - (byte/word~) scroll_hard::$16 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line0#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line0#1 + (byte/word~) scroll_hard::$16) - (byte/word~) scroll_hard::$17 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line1#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line1#1 + (byte/word~) scroll_hard::$17) - (byte/word~) scroll_hard::$18 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line2#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line2#1 + (byte/word~) scroll_hard::$18) + (byte*) SCREEN#3 ← phi( scroll_hard/(byte*) SCREEN#6 scroll_hard::@1/(byte*) SCREEN#3 ) + (byte/signed byte/word/signed word~) scroll_hard::$0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$0 + (byte/signed byte/word/signed word~) scroll_hard::$2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 0 + (byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$2 + (byte/word~) scroll_hard::$4 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$1 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$3 + (byte/word~) scroll_hard::$4) + (byte/signed byte/word/signed word~) scroll_hard::$5 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$6 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$5 + (byte/signed byte/word/signed word~) scroll_hard::$7 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 1 + (byte*~) scroll_hard::$8 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$7 + (byte/word~) scroll_hard::$9 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$6 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$8 + (byte/word~) scroll_hard::$9) + (byte/signed byte/word/signed word~) scroll_hard::$10 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$10 + (byte/signed byte/word/signed word~) scroll_hard::$12 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 2 + (byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$12 + (byte/word~) scroll_hard::$14 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$11 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$13 + (byte/word~) scroll_hard::$14) + (byte/signed byte/word/signed word~) scroll_hard::$15 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$16 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$15 + (byte/signed byte/word/signed word~) scroll_hard::$17 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 + (byte*~) scroll_hard::$18 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word~) scroll_hard::$17 (byte/word~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line3#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line3#1 + (byte/word~) scroll_hard::$19) - (byte/word~) scroll_hard::$20 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line4#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line4#1 + (byte/word~) scroll_hard::$20) - (byte/word~) scroll_hard::$21 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line5#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line5#1 + (byte/word~) scroll_hard::$21) - (byte/word~) scroll_hard::$22 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line6#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line6#1 + (byte/word~) scroll_hard::$22) - (byte/word~) scroll_hard::$23 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 - *((byte*) scroll_hard::line7#1 + (byte) scroll_hard::i#2) ← *((byte*) scroll_hard::line7#1 + (byte/word~) scroll_hard::$23) + *((byte*~) scroll_hard::$16 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$18 + (byte/word~) scroll_hard::$19) + (byte/word/signed word~) scroll_hard::$20 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$21 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$20 + (byte/word/signed word~) scroll_hard::$22 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 4 + (byte*~) scroll_hard::$23 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$22 + (byte/word~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$21 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$23 + (byte/word~) scroll_hard::$24) + (byte/word/signed word~) scroll_hard::$25 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$26 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$25 + (byte/word/signed word~) scroll_hard::$27 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 5 + (byte*~) scroll_hard::$28 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$27 + (byte/word~) scroll_hard::$29 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$26 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$28 + (byte/word~) scroll_hard::$29) + (byte/word/signed word~) scroll_hard::$30 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$31 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$30 + (byte/word/signed word~) scroll_hard::$32 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 + (byte*~) scroll_hard::$33 ← (byte*) SCREEN#3 + (byte/word/signed word~) scroll_hard::$32 + (byte/word~) scroll_hard::$34 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$31 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$33 + (byte/word~) scroll_hard::$34) + (word/signed word~) scroll_hard::$35 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$36 ← (byte*) SCREEN#3 + (word/signed word~) scroll_hard::$35 + (word/signed word~) scroll_hard::$37 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 7 + (byte*~) scroll_hard::$38 ← (byte*) SCREEN#3 + (word/signed word~) scroll_hard::$37 + (byte/word~) scroll_hard::$39 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word) 1 + *((byte*~) scroll_hard::$36 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$38 + (byte/word~) scroll_hard::$39) (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 - (boolean~) scroll_hard::$24 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) scroll_hard::$24) goto scroll_hard::@1 + (boolean~) scroll_hard::$40 ← (byte) scroll_hard::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) scroll_hard::$40) goto scroll_hard::@1 to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 return @@ -1075,7 +1092,7 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 (byte*) nxt#26 ← phi( @3/(byte*) nxt#6 ) (byte) current_bit#23 ← phi( @3/(byte) current_bit#28 ) (byte) scroll#15 ← phi( @3/(byte) scroll#17 ) - (byte*) SCREEN#4 ← phi( @3/(byte*) SCREEN#8 ) + (byte*) SCREEN#4 ← phi( @3/(byte*) SCREEN#9 ) call main param-assignment to:@7 @7: scope:[] from @6 @@ -1181,6 +1198,7 @@ SYMBOL TABLE SSA (byte*) SCREEN#18 (byte*) SCREEN#19 (byte*) SCREEN#2 +(byte*) SCREEN#20 (byte*) SCREEN#3 (byte*) SCREEN#4 (byte*) SCREEN#5 @@ -1445,59 +1463,51 @@ SYMBOL TABLE SSA (void()) scroll_hard() (byte/signed byte/word/signed word~) scroll_hard::$0 (byte*~) scroll_hard::$1 -(byte/word/signed word~) scroll_hard::$10 +(byte/signed byte/word/signed word~) scroll_hard::$10 (byte*~) scroll_hard::$11 -(byte/word/signed word~) scroll_hard::$12 +(byte/signed byte/word/signed word~) scroll_hard::$12 (byte*~) scroll_hard::$13 -(word/signed word~) scroll_hard::$14 -(byte*~) scroll_hard::$15 -(byte/word~) scroll_hard::$16 -(byte/word~) scroll_hard::$17 -(byte/word~) scroll_hard::$18 +(byte/word~) scroll_hard::$14 +(byte/signed byte/word/signed word~) scroll_hard::$15 +(byte*~) scroll_hard::$16 +(byte/signed byte/word/signed word~) scroll_hard::$17 +(byte*~) scroll_hard::$18 (byte/word~) scroll_hard::$19 (byte/signed byte/word/signed word~) scroll_hard::$2 -(byte/word~) scroll_hard::$20 -(byte/word~) scroll_hard::$21 -(byte/word~) scroll_hard::$22 -(byte/word~) scroll_hard::$23 -(boolean~) scroll_hard::$24 +(byte/word/signed word~) scroll_hard::$20 +(byte*~) scroll_hard::$21 +(byte/word/signed word~) scroll_hard::$22 +(byte*~) scroll_hard::$23 +(byte/word~) scroll_hard::$24 +(byte/word/signed word~) scroll_hard::$25 +(byte*~) scroll_hard::$26 +(byte/word/signed word~) scroll_hard::$27 +(byte*~) scroll_hard::$28 +(byte/word~) scroll_hard::$29 (byte*~) scroll_hard::$3 -(byte/signed byte/word/signed word~) scroll_hard::$4 -(byte*~) scroll_hard::$5 -(byte/signed byte/word/signed word~) scroll_hard::$6 -(byte*~) scroll_hard::$7 -(byte/word/signed word~) scroll_hard::$8 -(byte*~) scroll_hard::$9 +(byte/word/signed word~) scroll_hard::$30 +(byte*~) scroll_hard::$31 +(byte/word/signed word~) scroll_hard::$32 +(byte*~) scroll_hard::$33 +(byte/word~) scroll_hard::$34 +(word/signed word~) scroll_hard::$35 +(byte*~) scroll_hard::$36 +(word/signed word~) scroll_hard::$37 +(byte*~) scroll_hard::$38 +(byte/word~) scroll_hard::$39 +(byte/word~) scroll_hard::$4 +(boolean~) scroll_hard::$40 +(byte/signed byte/word/signed word~) scroll_hard::$5 +(byte*~) scroll_hard::$6 +(byte/signed byte/word/signed word~) scroll_hard::$7 +(byte*~) scroll_hard::$8 +(byte/word~) scroll_hard::$9 (label) scroll_hard::@1 (label) scroll_hard::@return (byte) scroll_hard::i (byte) scroll_hard::i#0 (byte) scroll_hard::i#1 (byte) scroll_hard::i#2 -(byte*) scroll_hard::line0 -(byte*) scroll_hard::line0#0 -(byte*) scroll_hard::line0#1 -(byte*) scroll_hard::line1 -(byte*) scroll_hard::line1#0 -(byte*) scroll_hard::line1#1 -(byte*) scroll_hard::line2 -(byte*) scroll_hard::line2#0 -(byte*) scroll_hard::line2#1 -(byte*) scroll_hard::line3 -(byte*) scroll_hard::line3#0 -(byte*) scroll_hard::line3#1 -(byte*) scroll_hard::line4 -(byte*) scroll_hard::line4#0 -(byte*) scroll_hard::line4#1 -(byte*) scroll_hard::line5 -(byte*) scroll_hard::line5#0 -(byte*) scroll_hard::line5#1 -(byte*) scroll_hard::line6 -(byte*) scroll_hard::line6#0 -(byte*) scroll_hard::line6#1 -(byte*) scroll_hard::line7 -(byte*) scroll_hard::line7#0 -(byte*) scroll_hard::line7#1 (void()) scroll_soft() (boolean~) scroll_soft::$0 (boolean~) scroll_soft::$1 @@ -1534,7 +1544,7 @@ Not aliassing across scopes: current_bit#25 current_bit#17 Not aliassing across scopes: nxt#28 nxt#21 Not aliassing across scopes: current_chargen#23 current_chargen#15 Not aliassing across scopes: PROCPORT#11 PROCPORT#12 -Not aliassing across scopes: SCREEN#12 SCREEN#14 +Not aliassing across scopes: SCREEN#13 SCREEN#15 Not aliassing across scopes: CHARGEN#7 CHARGEN#8 Not aliassing across scopes: TEXT#9 TEXT#10 Not aliassing across scopes: current_bit#11 current_bit#7 @@ -1542,7 +1552,7 @@ Not aliassing across scopes: nxt#13 nxt#5 Not aliassing across scopes: current_chargen#10 current_chargen#6 Not aliassing across scopes: current_bit#13 current_bit#18 Not aliassing across scopes: PROCPORT#5 PROCPORT#9 -Not aliassing across scopes: SCREEN#6 SCREEN#9 +Not aliassing across scopes: SCREEN#7 SCREEN#10 Not aliassing across scopes: nxt#29 nxt#22 Not aliassing across scopes: CHARGEN#5 CHARGEN#6 Not aliassing across scopes: current_chargen#28 current_chargen#16 @@ -1552,7 +1562,7 @@ Not aliassing across scopes: nxt#15 nxt#9 Not aliassing across scopes: scroll_bit::$3 next_char::return#3 Not aliassing across scopes: nxt#17 nxt#24 Not aliassing across scopes: TEXT#4 TEXT#6 -Not aliassing across scopes: SCREEN#3 SCREEN#5 +Not aliassing across scopes: SCREEN#6 SCREEN#5 Not aliassing across scopes: fillscreen::screen#1 fillscreen::screen#0 Not aliassing across scopes: fillscreen::fill#2 fillscreen::fill#0 Not aliassing across scopes: scroll#12 scroll#1 @@ -1567,7 +1577,7 @@ Alias (byte*) nxt#35 = (byte*) nxt#37 Alias (byte*) current_chargen#30 = (byte*) current_chargen#31 Alias (byte*) SCROLL#10 = (byte*) SCROLL#9 Alias (byte*) PROCPORT#16 = (byte*) PROCPORT#17 -Alias (byte*) SCREEN#1 = (byte*) SCREEN#18 +Alias (byte*) SCREEN#1 = (byte*) SCREEN#19 Alias (byte*) CHARGEN#12 = (byte*) CHARGEN#13 Alias (byte*) TEXT#14 = (byte*) TEXT#15 Alias (byte*) RASTER#2 = (byte*) RASTER#3 (byte*) RASTER#6 (byte*) RASTER#8 @@ -1578,7 +1588,7 @@ Alias (byte*) nxt#0 = (byte*) nxt#34 (byte*) nxt#11 (byte*) nxt#12 (byte*) nxt#1 Alias (byte*) current_chargen#0 = (byte*) current_chargen#29 (byte*) current_chargen#8 (byte*) current_chargen#9 (byte*) current_chargen#1 Alias (byte*) SCROLL#11 = (byte*) SCROLL#8 (byte*) SCROLL#4 (byte*) SCROLL#6 Alias (byte*) PROCPORT#12 = (byte*) PROCPORT#15 (byte*) PROCPORT#18 (byte*) PROCPORT#13 -Alias (byte*) SCREEN#14 = (byte*) SCREEN#17 (byte*) SCREEN#19 (byte*) SCREEN#15 +Alias (byte*) SCREEN#15 = (byte*) SCREEN#18 (byte*) SCREEN#20 (byte*) SCREEN#16 Alias (byte*) CHARGEN#11 = (byte*) CHARGEN#14 (byte*) CHARGEN#8 (byte*) CHARGEN#9 Alias (byte*) TEXT#10 = (byte*) TEXT#13 (byte*) TEXT#16 (byte*) TEXT#11 Alias (byte) scroll#13 = (byte) scroll#16 @@ -1587,7 +1597,7 @@ Alias (byte*) nxt#21 = (byte*) nxt#27 Alias (byte*) current_chargen#15 = (byte*) current_chargen#22 Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#3 (byte*) CHARGEN#1 (byte*) current_chargen#4 (byte*) current_chargen#26 (byte*) CHARGEN#16 (byte*) current_chargen#21 (byte*) CHARGEN#15 Alias (byte*) TEXT#0 = (byte*) TEXT#5 (byte*) TEXT#3 (byte*) TEXT#1 (byte*) nxt#6 (byte*) nxt#26 (byte*) TEXT#17 -Alias (byte*) SCREEN#0 = (byte*) SCREEN#13 (byte*) SCREEN#11 (byte*) SCREEN#8 (byte*) SCREEN#4 +Alias (byte*) SCREEN#0 = (byte*) SCREEN#14 (byte*) SCREEN#12 (byte*) SCREEN#9 (byte*) SCREEN#4 Alias (byte*) RASTER#0 = (byte*) RASTER#11 (byte*) RASTER#10 (byte*) RASTER#9 (byte*) RASTER#7 Alias (byte*) BGCOL#0 = (byte*) BGCOL#11 (byte*) BGCOL#10 (byte*) BGCOL#9 (byte*) BGCOL#8 Alias (byte*) SCROLL#0 = (byte*) SCROLL#15 (byte*) SCROLL#14 (byte*) SCROLL#13 (byte*) SCROLL#12 @@ -1597,7 +1607,7 @@ Alias (byte*) nxt#22 = (byte*) nxt#28 Alias (byte*) current_chargen#16 = (byte*) current_chargen#23 Alias (byte*) SCROLL#2 = (byte*) SCROLL#5 (byte*) SCROLL#3 Alias (byte*) PROCPORT#11 = (byte*) PROCPORT#9 -Alias (byte*) SCREEN#12 = (byte*) SCREEN#9 +Alias (byte*) SCREEN#10 = (byte*) SCREEN#13 Alias (byte*) CHARGEN#6 = (byte*) CHARGEN#7 Alias (byte*) TEXT#8 = (byte*) TEXT#9 Alias (byte) scroll#14 = (byte) scroll#4 @@ -1620,7 +1630,7 @@ Alias (byte*) nxt#24 = (byte*) nxt#29 Alias (byte*) CHARGEN#2 = (byte*) CHARGEN#4 (byte*) CHARGEN#5 Alias (byte*) TEXT#6 = (byte*) TEXT#7 Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#5 (byte*) PROCPORT#6 -Alias (byte*) SCREEN#10 = (byte*) SCREEN#6 (byte*) SCREEN#7 +Alias (byte*) SCREEN#11 = (byte*) SCREEN#7 (byte*) SCREEN#8 Alias (byte) next_char::return#0 = (byte) next_char::return#3 Alias (byte*) nxt#15 = (byte*) nxt#4 Alias (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 @@ -1640,14 +1650,6 @@ Alias (byte) current_bit#23 = (byte) current_bit#28 (byte) current_bit#4 Alias (byte) next_char::return#1 = (byte) next_char::c#2 (byte) next_char::return#4 (byte) next_char::return#2 Alias (byte*) TEXT#2 = (byte*) TEXT#4 (byte*) nxt#8 Alias (byte*) nxt#19 = (byte*) nxt#7 (byte*) nxt#9 -Alias (byte*) scroll_hard::line0#0 = (byte*~) scroll_hard::$1 -Alias (byte*) scroll_hard::line1#0 = (byte*~) scroll_hard::$3 -Alias (byte*) scroll_hard::line2#0 = (byte*~) scroll_hard::$5 -Alias (byte*) scroll_hard::line3#0 = (byte*~) scroll_hard::$7 -Alias (byte*) scroll_hard::line4#0 = (byte*~) scroll_hard::$9 -Alias (byte*) scroll_hard::line5#0 = (byte*~) scroll_hard::$11 -Alias (byte*) scroll_hard::line6#0 = (byte*~) scroll_hard::$13 -Alias (byte*) scroll_hard::line7#0 = (byte*~) scroll_hard::$15 Alias (byte*) fillscreen::cursor#0 = (byte*) fillscreen::screen#1 Alias (byte) scroll#12 = (byte) scroll#6 Alias (byte) current_bit#16 = (byte) current_bit#8 @@ -1676,7 +1678,7 @@ Not aliassing across scopes: current_bit#18 current_bit#17 Not aliassing across scopes: nxt#22 nxt#21 Not aliassing across scopes: current_chargen#16 current_chargen#15 Not aliassing across scopes: PROCPORT#11 PROCPORT#12 -Not aliassing across scopes: SCREEN#12 SCREEN#14 +Not aliassing across scopes: SCREEN#10 SCREEN#15 Not aliassing across scopes: CHARGEN#6 CHARGEN#11 Not aliassing across scopes: TEXT#8 TEXT#10 Not aliassing across scopes: current_bit#11 current_bit#15 @@ -1684,7 +1686,7 @@ Not aliassing across scopes: nxt#13 nxt#16 Not aliassing across scopes: current_chargen#10 current_chargen#13 Not aliassing across scopes: current_bit#13 current_bit#18 Not aliassing across scopes: PROCPORT#10 PROCPORT#11 -Not aliassing across scopes: SCREEN#10 SCREEN#12 +Not aliassing across scopes: SCREEN#11 SCREEN#10 Not aliassing across scopes: nxt#24 nxt#22 Not aliassing across scopes: CHARGEN#2 CHARGEN#6 Not aliassing across scopes: current_chargen#28 current_chargen#16 @@ -1694,7 +1696,7 @@ Not aliassing across scopes: nxt#15 nxt#19 Not aliassing across scopes: scroll_bit::$3 next_char::return#0 Not aliassing across scopes: nxt#17 nxt#24 Not aliassing across scopes: TEXT#2 TEXT#6 -Not aliassing across scopes: SCREEN#3 SCREEN#2 +Not aliassing across scopes: SCREEN#6 SCREEN#2 Not aliassing across scopes: fillscreen::cursor#0 fillscreen::screen#0 Not aliassing across scopes: fillscreen::fill#2 fillscreen::fill#0 Not aliassing across scopes: scroll#12 scroll#0 @@ -1703,7 +1705,7 @@ Not aliassing across scopes: nxt#10 nxt#0 Not aliassing across scopes: current_chargen#14 current_chargen#0 Alias (byte*) SCROLL#1 = (byte*) SCROLL#2 Alias (byte*) PROCPORT#1 = (byte*) PROCPORT#10 -Alias (byte*) SCREEN#10 = (byte*) SCREEN#2 +Alias (byte*) SCREEN#11 = (byte*) SCREEN#2 Alias (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#3 Alias (byte) scroll_bit::r#2 = (byte) scroll_bit::r#3 Alias (byte*) current_chargen#12 = (byte*) current_chargen#13 @@ -1733,7 +1735,7 @@ Not aliassing across scopes: current_bit#18 current_bit#17 Not aliassing across scopes: nxt#22 nxt#21 Not aliassing across scopes: current_chargen#16 current_chargen#15 Not aliassing across scopes: PROCPORT#11 PROCPORT#12 -Not aliassing across scopes: SCREEN#12 SCREEN#14 +Not aliassing across scopes: SCREEN#10 SCREEN#15 Not aliassing across scopes: CHARGEN#6 CHARGEN#11 Not aliassing across scopes: TEXT#8 TEXT#10 Not aliassing across scopes: current_bit#11 current_bit#14 @@ -1741,7 +1743,7 @@ Not aliassing across scopes: nxt#13 nxt#16 Not aliassing across scopes: current_chargen#10 current_chargen#12 Not aliassing across scopes: current_bit#13 current_bit#18 Not aliassing across scopes: PROCPORT#1 PROCPORT#11 -Not aliassing across scopes: SCREEN#10 SCREEN#12 +Not aliassing across scopes: SCREEN#11 SCREEN#10 Not aliassing across scopes: nxt#24 nxt#22 Not aliassing across scopes: CHARGEN#2 CHARGEN#6 Not aliassing across scopes: current_chargen#28 current_chargen#16 @@ -1755,7 +1757,7 @@ Not aliassing identity: PROCPORT#2 PROCPORT#2 Not aliassing identity: nxt#16 nxt#16 Not aliassing across scopes: nxt#17 nxt#24 Not aliassing across scopes: TEXT#2 TEXT#6 -Not aliassing across scopes: SCREEN#3 SCREEN#10 +Not aliassing across scopes: SCREEN#6 SCREEN#11 Not aliassing across scopes: fillscreen::cursor#0 fillscreen::screen#0 Not aliassing across scopes: fillscreen::fill#2 fillscreen::fill#0 Not aliassing across scopes: scroll#12 scroll#0 @@ -1770,7 +1772,7 @@ Self Phi Eliminated (byte*) nxt#31 Self Phi Eliminated (byte*) current_chargen#27 Self Phi Eliminated (byte*) SCROLL#7 Self Phi Eliminated (byte*) PROCPORT#14 -Self Phi Eliminated (byte*) SCREEN#16 +Self Phi Eliminated (byte*) SCREEN#17 Self Phi Eliminated (byte*) CHARGEN#10 Self Phi Eliminated (byte*) TEXT#12 Self Phi Eliminated (byte*) RASTER#2 @@ -1781,21 +1783,14 @@ Self Phi Eliminated (byte*) nxt#21 Self Phi Eliminated (byte*) current_chargen#15 Self Phi Eliminated (byte*) SCROLL#11 Self Phi Eliminated (byte*) PROCPORT#12 -Self Phi Eliminated (byte*) SCREEN#14 +Self Phi Eliminated (byte*) SCREEN#15 Self Phi Eliminated (byte*) CHARGEN#11 Self Phi Eliminated (byte*) TEXT#10 Self Phi Eliminated (byte*) current_chargen#12 Self Phi Eliminated (byte) current_bit#14 Self Phi Eliminated (byte*) PROCPORT#2 Self Phi Eliminated (byte*) nxt#16 -Self Phi Eliminated (byte*) scroll_hard::line0#1 -Self Phi Eliminated (byte*) scroll_hard::line1#1 -Self Phi Eliminated (byte*) scroll_hard::line2#1 -Self Phi Eliminated (byte*) scroll_hard::line3#1 -Self Phi Eliminated (byte*) scroll_hard::line4#1 -Self Phi Eliminated (byte*) scroll_hard::line5#1 -Self Phi Eliminated (byte*) scroll_hard::line6#1 -Self Phi Eliminated (byte*) scroll_hard::line7#1 +Self Phi Eliminated (byte*) SCREEN#3 Self Phi Eliminated (byte) fillscreen::fill#1 Self Phi Eliminated (byte*) fillscreen::screen#2 Succesful SSA optimization Pass2SelfPhiElimination @@ -1818,7 +1813,7 @@ Redundant Phi (byte*) nxt#21 (byte*) nxt#31 Redundant Phi (byte*) current_chargen#15 (byte*) current_chargen#27 Redundant Phi (byte*) SCROLL#11 (byte*) SCROLL#7 Redundant Phi (byte*) PROCPORT#12 (byte*) PROCPORT#14 -Redundant Phi (byte*) SCREEN#14 (byte*) SCREEN#16 +Redundant Phi (byte*) SCREEN#15 (byte*) SCREEN#17 Redundant Phi (byte*) CHARGEN#11 (byte*) CHARGEN#10 Redundant Phi (byte*) TEXT#10 (byte*) TEXT#12 Redundant Phi (byte) scroll#0 (byte) scroll#10 @@ -1831,7 +1826,7 @@ Redundant Phi (byte) current_bit#18 (byte) current_bit#17 Redundant Phi (byte*) nxt#22 (byte*) nxt#21 Redundant Phi (byte*) current_chargen#16 (byte*) current_chargen#15 Redundant Phi (byte*) PROCPORT#11 (byte*) PROCPORT#12 -Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#14 +Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#15 Redundant Phi (byte*) CHARGEN#6 (byte*) CHARGEN#11 Redundant Phi (byte*) TEXT#8 (byte*) TEXT#10 Redundant Phi (byte) current_bit#11 (byte) current_bit#14 @@ -1839,7 +1834,7 @@ Redundant Phi (byte*) nxt#13 (byte*) nxt#16 Redundant Phi (byte*) current_chargen#10 (byte*) current_chargen#12 Redundant Phi (byte) current_bit#13 (byte) current_bit#18 Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#11 -Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#12 +Redundant Phi (byte*) SCREEN#11 (byte*) SCREEN#10 Redundant Phi (byte*) nxt#24 (byte*) nxt#22 Redundant Phi (byte*) CHARGEN#2 (byte*) CHARGEN#6 Redundant Phi (byte*) current_chargen#28 (byte*) current_chargen#16 @@ -1851,15 +1846,8 @@ Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#1 Redundant Phi (byte*) nxt#16 (byte*) nxt#36 Redundant Phi (byte*) nxt#17 (byte*) nxt#24 Redundant Phi (byte*) TEXT#2 (byte*) TEXT#6 -Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#10 -Redundant Phi (byte*) scroll_hard::line0#1 (byte*) scroll_hard::line0#0 -Redundant Phi (byte*) scroll_hard::line1#1 (byte*) scroll_hard::line1#0 -Redundant Phi (byte*) scroll_hard::line2#1 (byte*) scroll_hard::line2#0 -Redundant Phi (byte*) scroll_hard::line3#1 (byte*) scroll_hard::line3#0 -Redundant Phi (byte*) scroll_hard::line4#1 (byte*) scroll_hard::line4#0 -Redundant Phi (byte*) scroll_hard::line5#1 (byte*) scroll_hard::line5#0 -Redundant Phi (byte*) scroll_hard::line6#1 (byte*) scroll_hard::line6#0 -Redundant Phi (byte*) scroll_hard::line7#1 (byte*) scroll_hard::line7#0 +Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#11 +Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#6 Redundant Phi (byte*) fillscreen::cursor#0 (byte*) fillscreen::screen#0 Redundant Phi (byte) fillscreen::fill#2 (byte) fillscreen::fill#0 Redundant Phi (byte) fillscreen::fill#1 (byte) fillscreen::fill#2 @@ -1876,7 +1864,7 @@ Simple Condition (boolean~) scroll_bit::$2 if((byte) current_bit#5!=(byte/signed Simple Condition (boolean~) scroll_bit::$11 if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 Simple Condition (boolean~) scroll_bit::$14 if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 Simple Condition (boolean~) next_char::$1 if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 -Simple Condition (boolean~) scroll_hard::$24 if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 +Simple Condition (boolean~) scroll_hard::$40 if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 Simple Condition (boolean~) fillscreen::$1 if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT#0 = ((byte*))1 @@ -1894,54 +1882,78 @@ Constant (const byte) scroll_bit::r#0 = 0 Constant (const byte) current_bit#6 = 128 Constant (const byte) scroll_bit::b#0 = ' ' Constant (const byte) scroll_bit::b#1 = 128+' ' -Constant (const byte/signed byte/word/signed word) scroll_hard::$0 = 40*0 -Constant (const byte/signed byte/word/signed word) scroll_hard::$2 = 40*1 -Constant (const byte/signed byte/word/signed word) scroll_hard::$4 = 40*2 -Constant (const byte/signed byte/word/signed word) scroll_hard::$6 = 40*3 -Constant (const byte/word/signed word) scroll_hard::$8 = 40*4 -Constant (const byte/word/signed word) scroll_hard::$10 = 40*5 -Constant (const byte/word/signed word) scroll_hard::$12 = 40*6 -Constant (const word/signed word) scroll_hard::$14 = 40*7 Constant (const byte) scroll_hard::i#0 = 0 +Constant (const byte/signed byte/word/signed word) scroll_hard::$0 = 40*0 +Constant (const byte/signed byte/word/signed word) scroll_hard::$2 = 40*0 +Constant (const byte/signed byte/word/signed word) scroll_hard::$5 = 40*1 +Constant (const byte/signed byte/word/signed word) scroll_hard::$7 = 40*1 +Constant (const byte/signed byte/word/signed word) scroll_hard::$10 = 40*2 +Constant (const byte/signed byte/word/signed word) scroll_hard::$12 = 40*2 +Constant (const byte/signed byte/word/signed word) scroll_hard::$15 = 40*3 +Constant (const byte/signed byte/word/signed word) scroll_hard::$17 = 40*3 +Constant (const byte/word/signed word) scroll_hard::$20 = 40*4 +Constant (const byte/word/signed word) scroll_hard::$22 = 40*4 +Constant (const byte/word/signed word) scroll_hard::$25 = 40*5 +Constant (const byte/word/signed word) scroll_hard::$27 = 40*5 +Constant (const byte/word/signed word) scroll_hard::$30 = 40*6 +Constant (const byte/word/signed word) scroll_hard::$32 = 40*6 +Constant (const word/signed word) scroll_hard::$35 = 40*7 +Constant (const word/signed word) scroll_hard::$37 = 40*7 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) fillscreen::screen#0 = SCREEN#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000 Succesful SSA optimization Pass2ConstantIdentification -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Consolidated constant in assignment scroll_bit::sc#0 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Succesful SSA optimization Pass2ConstantAdditionElimination -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 -Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#16 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 +Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@1 @@ -1961,7 +1973,7 @@ Not aliassing across scopes: nxt#31 nxt#14 Not aliassing across scopes: current_chargen#27 current_chargen#11 Not aliassing identity: SCROLL#7 SCROLL#7 Not aliassing identity: PROCPORT#14 PROCPORT#14 -Not aliassing identity: SCREEN#16 SCREEN#16 +Not aliassing identity: SCREEN#17 SCREEN#17 Not aliassing identity: CHARGEN#10 CHARGEN#10 Not aliassing identity: TEXT#12 TEXT#12 Not aliassing across scopes: current_bit#12 current_bit#29 @@ -1969,7 +1981,7 @@ Not aliassing across scopes: nxt#14 nxt#31 Not aliassing across scopes: current_chargen#11 current_chargen#27 Not aliassing across scopes: current_chargen#19 current_chargen#27 Not aliassing across scopes: nxt#36 nxt#31 -Not aliassing across scopes: scroll_bit::$7 SCREEN#16 +Not aliassing across scopes: scroll_bit::$7 SCREEN#17 Not aliassing across scopes: next_char::return#0 next_char::return#1 Not aliassing across scopes: scroll_bit::$3 next_char::return#0 Not aliassing across scopes: nxt#18 nxt#31 @@ -1977,7 +1989,7 @@ Self Phi Eliminated (byte*) RASTER#1 Self Phi Eliminated (byte*) BGCOL#4 Self Phi Eliminated (byte*) SCROLL#7 Self Phi Eliminated (byte*) PROCPORT#14 -Self Phi Eliminated (byte*) SCREEN#16 +Self Phi Eliminated (byte*) SCREEN#17 Self Phi Eliminated (byte*) CHARGEN#10 Self Phi Eliminated (byte*) TEXT#12 Succesful SSA optimization Pass2SelfPhiElimination @@ -1985,46 +1997,54 @@ Redundant Phi (byte*) RASTER#1 (const byte*) RASTER#0 Redundant Phi (byte*) BGCOL#4 (const byte*) BGCOL#0 Redundant Phi (byte*) SCROLL#7 (const byte*) SCROLL#0 Redundant Phi (byte*) PROCPORT#14 (const byte*) PROCPORT#0 -Redundant Phi (byte*) SCREEN#16 (const byte*) SCREEN#0 +Redundant Phi (byte*) SCREEN#17 (const byte*) SCREEN#0 Redundant Phi (byte*) CHARGEN#10 (const byte*) CHARGEN#0 Redundant Phi (byte*) TEXT#12 (const string) TEXT#0 Succesful SSA optimization Pass2RedundantPhiElimination Constant (const byte*) scroll_bit::$7 = SCREEN#0 -Constant (const byte*) scroll_hard::line0#0 = SCREEN#0+scroll_hard::$0 -Constant (const byte*) scroll_hard::line1#0 = SCREEN#0+scroll_hard::$2 -Constant (const byte*) scroll_hard::line2#0 = SCREEN#0+scroll_hard::$4 -Constant (const byte*) scroll_hard::line3#0 = SCREEN#0+scroll_hard::$6 -Constant (const byte*) scroll_hard::line4#0 = SCREEN#0+scroll_hard::$8 -Constant (const byte*) scroll_hard::line5#0 = SCREEN#0+scroll_hard::$10 -Constant (const byte*) scroll_hard::line6#0 = SCREEN#0+scroll_hard::$12 -Constant (const byte*) scroll_hard::line7#0 = SCREEN#0+scroll_hard::$14 +Constant (const byte*) scroll_hard::$1 = SCREEN#0+scroll_hard::$0 +Constant (const byte*) scroll_hard::$3 = SCREEN#0+scroll_hard::$2 +Constant (const byte*) scroll_hard::$6 = SCREEN#0+scroll_hard::$5 +Constant (const byte*) scroll_hard::$8 = SCREEN#0+scroll_hard::$7 +Constant (const byte*) scroll_hard::$11 = SCREEN#0+scroll_hard::$10 +Constant (const byte*) scroll_hard::$13 = SCREEN#0+scroll_hard::$12 +Constant (const byte*) scroll_hard::$16 = SCREEN#0+scroll_hard::$15 +Constant (const byte*) scroll_hard::$18 = SCREEN#0+scroll_hard::$17 +Constant (const byte*) scroll_hard::$21 = SCREEN#0+scroll_hard::$20 +Constant (const byte*) scroll_hard::$23 = SCREEN#0+scroll_hard::$22 +Constant (const byte*) scroll_hard::$26 = SCREEN#0+scroll_hard::$25 +Constant (const byte*) scroll_hard::$28 = SCREEN#0+scroll_hard::$27 +Constant (const byte*) scroll_hard::$31 = SCREEN#0+scroll_hard::$30 +Constant (const byte*) scroll_hard::$33 = SCREEN#0+scroll_hard::$32 +Constant (const byte*) scroll_hard::$36 = SCREEN#0+scroll_hard::$35 +Constant (const byte*) scroll_hard::$38 = SCREEN#0+scroll_hard::$37 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$7+40+39 Succesful SSA optimization Pass2ConstantIdentification Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line0#0+1 + scroll_hard::$16) +Consolidated array index constant in assignment *(scroll_hard::$3+1 + scroll_hard::$4) Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line1#0+1 + scroll_hard::$17) +Consolidated array index constant in assignment *(scroll_hard::$8+1 + scroll_hard::$9) Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line2#0+1 + scroll_hard::$18) +Consolidated array index constant in assignment *(scroll_hard::$13+1 + scroll_hard::$14) Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line3#0+1 + scroll_hard::$19) +Consolidated array index constant in assignment *(scroll_hard::$18+1 + scroll_hard::$19) Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line4#0+1 + scroll_hard::$20) +Consolidated array index constant in assignment *(scroll_hard::$23+1 + scroll_hard::$24) Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line5#0+1 + scroll_hard::$21) +Consolidated array index constant in assignment *(scroll_hard::$28+1 + scroll_hard::$29) Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line6#0+1 + scroll_hard::$22) +Consolidated array index constant in assignment *(scroll_hard::$33+1 + scroll_hard::$34) Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 -Consolidated array index constant in assignment *(scroll_hard::line7#0+1 + scroll_hard::$23) +Consolidated array index constant in assignment *(scroll_hard::$38+1 + scroll_hard::$39) Succesful SSA optimization Pass2ConstantAdditionElimination Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 @@ -2047,7 +2067,7 @@ Not aliassing across scopes: nxt#36 nxt#31 Not aliassing across scopes: next_char::return#0 next_char::return#1 Not aliassing across scopes: scroll_bit::$3 next_char::return#0 Not aliassing across scopes: nxt#18 nxt#31 -Alias (byte) scroll_hard::i#2 = (byte/word~) scroll_hard::$16 (byte/word~) scroll_hard::$17 (byte/word~) scroll_hard::$18 (byte/word~) scroll_hard::$19 (byte/word~) scroll_hard::$20 (byte/word~) scroll_hard::$21 (byte/word~) scroll_hard::$22 (byte/word~) scroll_hard::$23 +Alias (byte) scroll_hard::i#2 = (byte/word~) scroll_hard::$4 (byte/word~) scroll_hard::$9 (byte/word~) scroll_hard::$14 (byte/word~) scroll_hard::$19 (byte/word~) scroll_hard::$24 (byte/word~) scroll_hard::$29 (byte/word~) scroll_hard::$34 (byte/word~) scroll_hard::$39 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: scroll#18 scroll#10 Not aliassing across scopes: current_bit#29 current_bit#12 @@ -2101,26 +2121,50 @@ Inlining constant with var siblings (const byte) current_bit#6 Inlining constant with var siblings (const byte) current_bit#6 Inlining constant with var siblings (const byte) current_bit#6 Inlining constant with different constant siblings (const byte) current_bit#6 -Constant inlined scroll_hard::$4 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 -Constant inlined scroll_hard::i#0 = (byte/signed byte/word/signed word) 0 -Constant inlined scroll_hard::$6 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 +Constant inlined scroll_hard::$3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 +Constant inlined scroll_hard::$6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 +Constant inlined scroll_hard::$5 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 Constant inlined scroll_hard::$0 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 -Constant inlined scroll_hard::$2 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 +Constant inlined scroll_hard::$2 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 +Constant inlined scroll_hard::$1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 +Constant inlined $0 = (const string) TEXT#0 +Constant inlined scroll_hard::$23 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 +Constant inlined scroll_hard::$25 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 +Constant inlined scroll_hard::$26 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 +Constant inlined scroll_hard::$27 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 +Constant inlined current_bit#6 = (byte/word/signed word) 128 +Constant inlined scroll_hard::$28 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 +Constant inlined scroll_bit::r#0 = (byte/signed byte/word/signed word) 0 +Constant inlined current_bit#23 = (byte/signed byte/word/signed word) 1 +Constant inlined fillscreen::screen#0 = (const byte*) SCREEN#0 +Constant inlined scroll_hard::$8 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 +Constant inlined scroll_hard::$7 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 +Constant inlined scroll_hard::$20 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 +Constant inlined scroll_hard::$21 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 +Constant inlined scroll_hard::$22 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 +Constant inlined scroll_hard::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined scroll_bit::b#0 = (byte) ' ' Constant inlined scroll_bit::$7 = (const byte*) SCREEN#0 Constant inlined fillscreen::$0 = (const byte*) SCREEN#0+(word/signed word) 1000 Constant inlined scroll_bit::b#1 = (byte/word/signed word) 128+(byte) ' ' -Constant inlined $0 = (const string) TEXT#0 -Constant inlined scroll_hard::$12 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 -Constant inlined scroll_hard::$14 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 -Constant inlined current_bit#6 = (byte/word/signed word) 128 -Constant inlined scroll_bit::r#0 = (byte/signed byte/word/signed word) 0 -Constant inlined current_bit#23 = (byte/signed byte/word/signed word) 1 -Constant inlined fillscreen::screen#0 = (const byte*) SCREEN#0 +Constant inlined scroll_hard::$12 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 +Constant inlined scroll_hard::$35 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 +Constant inlined scroll_hard::$13 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 +Constant inlined scroll_hard::$36 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 +Constant inlined scroll_hard::$15 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 +Constant inlined scroll_hard::$37 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 +Constant inlined scroll_hard::$16 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 +Constant inlined scroll_hard::$38 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 +Constant inlined scroll_hard::$17 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 +Constant inlined scroll_hard::$18 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 Constant inlined scroll_bit::sc#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 -Constant inlined scroll_hard::$8 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 +Constant inlined scroll_hard::$30 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 Constant inlined scroll#15 = (byte/signed byte/word/signed word) 7 -Constant inlined scroll_hard::$10 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 +Constant inlined scroll_hard::$31 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 +Constant inlined scroll_hard::$10 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 +Constant inlined scroll_hard::$32 = (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 +Constant inlined scroll_hard::$11 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 +Constant inlined scroll_hard::$33 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 Constant inlined scroll#14 = (byte/signed byte/word/signed word) 7 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @6 @end main main::@2 main::@3 main::@5 main::@8 main::@return scroll_soft scroll_soft::@2 scroll_soft::@1 scroll_soft::@return scroll_bit scroll_bit::@4 scroll_bit::@8 scroll_bit::@1 scroll_bit::@7 scroll_bit::@2 scroll_bit::@5 scroll_bit::@3 scroll_bit::@6 scroll_bit::@return scroll_hard scroll_hard::@1 scroll_hard::@return next_char next_char::@2 next_char::@1 next_char::@return fillscreen fillscreen::@1 fillscreen::@return @@ -2333,14 +2377,14 @@ scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 [48] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [49] *((const byte*) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [50] *((const byte*) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [51] *((const byte*) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [52] *((const byte*) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [53] *((const byte*) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [54] *((const byte*) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [55] *((const byte*) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) - [56] *((const byte*) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [49] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) to:scroll_hard::@return @@ -2514,14 +2558,6 @@ VARIABLE REGISTER WEIGHTS (byte) scroll_hard::i (byte) scroll_hard::i#1 151.5 (byte) scroll_hard::i#2 202.00000000000006 -(byte*) scroll_hard::line0 -(byte*) scroll_hard::line1 -(byte*) scroll_hard::line2 -(byte*) scroll_hard::line3 -(byte*) scroll_hard::line4 -(byte*) scroll_hard::line5 -(byte*) scroll_hard::line6 -(byte*) scroll_hard::line7 (void()) scroll_soft() Initial phi equivalence classes @@ -2890,14 +2926,6 @@ scroll_bit: { } //SEG107 scroll_hard scroll_hard: { - .const line0 = SCREEN+$28*0 - .const line1 = SCREEN+$28*1 - .const line2 = SCREEN+$28*2 - .const line3 = SCREEN+$28*3 - .const line4 = SCREEN+$28*4 - .const line5 = SCREEN+$28*5 - .const line6 = SCREEN+$28*6 - .const line7 = SCREEN+$28*7 .label i = $a //SEG108 [48] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: @@ -2911,38 +2939,38 @@ scroll_hard: { jmp b1 //SEG112 scroll_hard::@1 b1: - //SEG113 [49] *((const byte*) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG113 [49] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line0+1,y - sta line0,y - //SEG114 [50] *((const byte*) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda SCREEN+$28*0+1,y + sta SCREEN+$28*0,y + //SEG114 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line1+1,y - sta line1,y - //SEG115 [51] *((const byte*) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda SCREEN+$28*1+1,y + sta SCREEN+$28*1,y + //SEG115 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line2+1,y - sta line2,y - //SEG116 [52] *((const byte*) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda SCREEN+$28*2+1,y + sta SCREEN+$28*2,y + //SEG116 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line3+1,y - sta line3,y - //SEG117 [53] *((const byte*) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda SCREEN+$28*3+1,y + sta SCREEN+$28*3,y + //SEG117 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line4+1,y - sta line4,y - //SEG118 [54] *((const byte*) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda SCREEN+$28*4+1,y + sta SCREEN+$28*4,y + //SEG118 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line5+1,y - sta line5,y - //SEG119 [55] *((const byte*) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda SCREEN+$28*5+1,y + sta SCREEN+$28*5,y + //SEG119 [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line6+1,y - sta line6,y - //SEG120 [56] *((const byte*) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda SCREEN+$28*6+1,y + sta SCREEN+$28*6,y + //SEG120 [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i - lda line7+1,y - sta line7,y + lda SCREEN+$28*7+1,y + sta SCREEN+$28*7,y //SEG121 [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i //SEG122 [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 @@ -3062,15 +3090,15 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ cu Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] Statement [41] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a Statement [44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a -Statement [49] *((const byte*) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [49] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] -Statement [50] *((const byte*) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [51] *((const byte*) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [52] *((const byte*) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [53] *((const byte*) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [54] *((const byte*) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [55] *((const byte*) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [56] *((const byte*) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a Statement [60] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y Statement [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y Statement [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a @@ -3085,14 +3113,14 @@ Statement [36] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) cur Statement [40] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y Statement [41] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a Statement [44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a -Statement [49] *((const byte*) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [50] *((const byte*) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [51] *((const byte*) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [52] *((const byte*) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [53] *((const byte*) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [54] *((const byte*) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [55] *((const byte*) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a -Statement [56] *((const byte*) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [49] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a Statement [60] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y Statement [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y Statement [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a @@ -3422,14 +3450,6 @@ scroll_bit: { } //SEG107 scroll_hard scroll_hard: { - .const line0 = SCREEN+$28*0 - .const line1 = SCREEN+$28*1 - .const line2 = SCREEN+$28*2 - .const line3 = SCREEN+$28*3 - .const line4 = SCREEN+$28*4 - .const line5 = SCREEN+$28*5 - .const line6 = SCREEN+$28*6 - .const line7 = SCREEN+$28*7 //SEG108 [48] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: //SEG109 [48] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuxx=vbuc1 @@ -3441,30 +3461,30 @@ scroll_hard: { jmp b1 //SEG112 scroll_hard::@1 b1: - //SEG113 [49] *((const byte*) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line0+1,x - sta line0,x - //SEG114 [50] *((const byte*) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line1+1,x - sta line1,x - //SEG115 [51] *((const byte*) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line2+1,x - sta line2,x - //SEG116 [52] *((const byte*) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line3+1,x - sta line3,x - //SEG117 [53] *((const byte*) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line4+1,x - sta line4,x - //SEG118 [54] *((const byte*) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line5+1,x - sta line5,x - //SEG119 [55] *((const byte*) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line6+1,x - sta line6,x - //SEG120 [56] *((const byte*) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line7+1,x - sta line7,x + //SEG113 [49] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*0+1,x + sta SCREEN+$28*0,x + //SEG114 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*1+1,x + sta SCREEN+$28*1,x + //SEG115 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*2+1,x + sta SCREEN+$28*2,x + //SEG116 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*3+1,x + sta SCREEN+$28*3,x + //SEG117 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*4+1,x + sta SCREEN+$28*4,x + //SEG118 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*5+1,x + sta SCREEN+$28*5,x + //SEG119 [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*6+1,x + sta SCREEN+$28*6,x + //SEG120 [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*7+1,x + sta SCREEN+$28*7,x //SEG121 [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx=_inc_vbuxx inx //SEG122 [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 @@ -3753,22 +3773,6 @@ FINAL SYMBOL TABLE (byte) scroll_hard::i (byte) scroll_hard::i#1 reg byte x 151.5 (byte) scroll_hard::i#2 reg byte x 202.00000000000006 -(byte*) scroll_hard::line0 -(const byte*) scroll_hard::line0#0 line0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 -(byte*) scroll_hard::line1 -(const byte*) scroll_hard::line1#0 line1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 -(byte*) scroll_hard::line2 -(const byte*) scroll_hard::line2#0 line2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 -(byte*) scroll_hard::line3 -(const byte*) scroll_hard::line3#0 line3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 -(byte*) scroll_hard::line4 -(const byte*) scroll_hard::line4#0 line4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 -(byte*) scroll_hard::line5 -(const byte*) scroll_hard::line5#0 line5 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 -(byte*) scroll_hard::line6 -(const byte*) scroll_hard::line6#0 line6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 -(byte*) scroll_hard::line7 -(const byte*) scroll_hard::line7#0 line7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 (void()) scroll_soft() (label) scroll_soft::@1 (label) scroll_soft::@2 @@ -4017,14 +4021,6 @@ scroll_bit: { } //SEG107 scroll_hard scroll_hard: { - .const line0 = SCREEN+$28*0 - .const line1 = SCREEN+$28*1 - .const line2 = SCREEN+$28*2 - .const line3 = SCREEN+$28*3 - .const line4 = SCREEN+$28*4 - .const line5 = SCREEN+$28*5 - .const line6 = SCREEN+$28*6 - .const line7 = SCREEN+$28*7 //SEG108 [48] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] //SEG109 [48] phi (byte) scroll_hard::i#2 = (byte/signed byte/word/signed word) 0 [phi:scroll_hard->scroll_hard::@1#0] -- vbuxx=vbuc1 ldx #0 @@ -4032,30 +4028,30 @@ scroll_hard: { //SEG111 [48] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG112 scroll_hard::@1 b1: - //SEG113 [49] *((const byte*) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line0+1,x - sta line0,x - //SEG114 [50] *((const byte*) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line1+1,x - sta line1,x - //SEG115 [51] *((const byte*) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line2+1,x - sta line2,x - //SEG116 [52] *((const byte*) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line3+1,x - sta line3,x - //SEG117 [53] *((const byte*) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line4+1,x - sta line4,x - //SEG118 [54] *((const byte*) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line5+1,x - sta line5,x - //SEG119 [55] *((const byte*) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line6+1,x - sta line6,x - //SEG120 [56] *((const byte*) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte*) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda line7+1,x - sta line7,x + //SEG113 [49] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*0+1,x + sta SCREEN+$28*0,x + //SEG114 [50] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*1+1,x + sta SCREEN+$28*1,x + //SEG115 [51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*2+1,x + sta SCREEN+$28*2,x + //SEG116 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*3+1,x + sta SCREEN+$28*3,x + //SEG117 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*4+1,x + sta SCREEN+$28*4,x + //SEG118 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*5+1,x + sta SCREEN+$28*5,x + //SEG119 [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*6+1,x + sta SCREEN+$28*6,x + //SEG120 [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 + (byte) scroll_hard::i#2) ← *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda SCREEN+$28*7+1,x + sta SCREEN+$28*7,x //SEG121 [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx=_inc_vbuxx inx //SEG122 [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym index e21533831..21ef753ec 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym @@ -91,22 +91,6 @@ (byte) scroll_hard::i (byte) scroll_hard::i#1 reg byte x 151.5 (byte) scroll_hard::i#2 reg byte x 202.00000000000006 -(byte*) scroll_hard::line0 -(const byte*) scroll_hard::line0#0 line0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 -(byte*) scroll_hard::line1 -(const byte*) scroll_hard::line1#0 line1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 1 -(byte*) scroll_hard::line2 -(const byte*) scroll_hard::line2#0 line2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 2 -(byte*) scroll_hard::line3 -(const byte*) scroll_hard::line3#0 line3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 -(byte*) scroll_hard::line4 -(const byte*) scroll_hard::line4#0 line4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 4 -(byte*) scroll_hard::line5 -(const byte*) scroll_hard::line5#0 line5 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 5 -(byte*) scroll_hard::line6 -(const byte*) scroll_hard::line6#0 line6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 6 -(byte*) scroll_hard::line7 -(const byte*) scroll_hard::line7#0 line7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 7 (void()) scroll_soft() (label) scroll_soft::@1 (label) scroll_soft::@2