diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java index d099907e8..8867901a1 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentSignature.java @@ -102,18 +102,17 @@ public class AsmFragmentSignature { signature.append(getOperatorFragmentName(operator)); } if ( - rValue2 instanceof ConstantInteger && - ((ConstantInteger) rValue2).getNumber() == 2 && - operator != null && - (operator.getOperator().equals(">>") || operator.getOperator().equals("<<"))) { - signature.append("2"); - } else if ( rValue2 instanceof ConstantInteger && ((ConstantInteger) rValue2).getNumber() == 1 && operator != null && - (operator.getOperator().equals("-") || operator.getOperator().equals("+") || operator.getOperator().equals( - ">>") || operator.getOperator().equals("<<"))) { + (operator.getOperator().equals("-") || operator.getOperator().equals("+"))) { signature.append("1"); + } else if ( + rValue2 instanceof ConstantInteger && + ((ConstantInteger) rValue2).getNumber() <= 7 && + operator != null && + (operator.getOperator().equals(">>") || operator.getOperator().equals("<<"))) { + signature.append(((ConstantInteger) rValue2).getNumber()); } else if ( rValue2 instanceof ConstantInteger && ((ConstantInteger) rValue2).getNumber() == 0 && diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_rol_2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_rol_2.asm new file mode 100644 index 000000000..4ce5ba6e5 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_rol_2.asm @@ -0,0 +1,4 @@ +asl {zpwo1} +rol {zpwo1}+1 +asl {zpwo1} +rol {zpwo1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_rol_3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_rol_3.asm new file mode 100644 index 000000000..18272dd1b --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo1_rol_3.asm @@ -0,0 +1,6 @@ +asl {zpwo1} +rol {zpwo1}+1 +asl {zpwo1} +rol {zpwo1}+1 +asl {zpwo1} +rol {zpwo1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_rol_2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_rol_2.asm new file mode 100644 index 000000000..93c802cfe --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_rol_2.asm @@ -0,0 +1,12 @@ +lda {zpwo1} +asl +sta {zpwo2} +lda {zpwo1}+1 +rol +sta {zpwo2}+1 +lda {zpwo1} +asl +sta {zpwo2} +lda {zpwo1}+1 +rol +sta {zpwo2}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_rol_3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_rol_3.asm new file mode 100644 index 000000000..c386badf1 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpwo1=zpwo2_rol_3.asm @@ -0,0 +1,18 @@ +lda {zpwo1} +asl +sta {zpwo2} +lda {zpwo1}+1 +rol +sta {zpwo2}+1 +lda {zpwo1} +asl +sta {zpwo2} +lda {zpwo1}+1 +rol +sta {zpwo2}+1 +lda {zpwo1} +asl +sta {zpwo2} +lda {zpwo1}+1 +rol +sta {zpwo2}+1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.asm b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.asm index b0ff96e0d..7b1318a0b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.asm @@ -50,10 +50,10 @@ scroll_soft: { rts } scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - jsr scroll_hard lda current_bit lsr sta current_bit @@ -62,22 +62,23 @@ scroll_bit: { sta c lda #0 sta c+1 - asl c - rol c+1 - asl c - rol c+1 - asl c - rol c+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 lda #CHARGEN - adc c+1 - sta _8+1 + adc _4+1 + sta _5+1 lda #$80 sta current_bit b1: + jsr scroll_hard sei lda #$32 sta PROCPORT @@ -93,7 +94,7 @@ scroll_bit: { and current_bit cmp #0 beq b3_from_b2 - lda #'*' + lda #$80+' ' jmp b3 b3_from_b2: lda #' ' @@ -115,23 +116,6 @@ scroll_bit: { cli rts } -next_char: { - ldy #0 - lda (nxt),y - cmp #'@' - bne b1 - lda TEXT - lda #TEXT - sta nxt+1 - b1: - inc nxt - bne !+ - inc nxt+1 - !: - rts -} scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -164,6 +148,23 @@ scroll_hard: { bne b1 rts } +next_char: { + ldy #0 + lda (nxt),y + cmp #'@' + bne b1 + lda TEXT + lda #TEXT + sta nxt+1 + b1: + inc nxt + bne !+ + inc nxt+1 + !: + rts +} fillscreen: { .const fill = $20 .label cursor = 3 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg index 1cdf5f9a4..2fd9256de 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.cfg @@ -34,11 +34,11 @@ scroll_soft: scope:[scroll_soft] from main::@5 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft - [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_soft::@1 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) - [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) @@ -47,106 +47,103 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [17] phi() [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) - [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) - [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) + [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) + [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) + [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) to:scroll_bit::@4 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 - [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) +scroll_bit::@4: scope:[scroll_bit] from scroll_bit + [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 - [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) - [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) - [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) - [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) - [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) - [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) + [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) + [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) + [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) to:scroll_bit::@1 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - [29] (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) - [29] (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) - [29] (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + [25] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [25] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [25] (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_bit::@2 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - [32] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) SCREEN#0+(byte) 40+(byte) 39 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [32] (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) 0 scroll_bit::@3/(byte) scroll_bit::r#1 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) - [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) - [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + [29] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [29] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) + [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) + [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [36] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) '*' ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) - [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) - [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) - [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) + [33] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) + [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) + [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) + [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) to:scroll_bit::@6 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 - [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:@return -next_char: scope:[next_char] from scroll_bit::@4 - [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) - [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) - to:next_char::@2 -next_char::@2: scope:[next_char] from next_char - [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) - to:next_char::@1 -next_char::@1: scope:[next_char] from next_char next_char::@2 - [47] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#18 ] ) - [47] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#18 ] ) - [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - to:next_char::@return -next_char::@return: scope:[next_char] from next_char::@1 - [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit - [50] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 + [41] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - [51] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) - [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) - [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) - [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) - [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) - [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) - [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) - [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) - [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) - [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) + [42] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) + [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) + [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) + [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) + [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) + [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) + [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) + [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) + [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) + [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 - [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + to:@return +next_char: scope:[next_char] from scroll_bit::@4 + [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) + [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) + to:next_char::@2 +next_char::@2: scope:[next_char] from next_char + [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) + to:next_char::@1 +next_char::@1: scope:[next_char] from next_char next_char::@2 + [65] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [65] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + to:next_char::@return +next_char::@return: scope:[next_char] from next_char::@1 + [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) to:@return fillscreen: scope:[fillscreen] from main - [71] phi() [ ] ( main:0::fillscreen:2 [ ] ) + [68] phi() [ ] ( main:0::fillscreen:2 [ ] ) to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 - [72] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) - [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) - [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) - [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [69] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) + [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) + [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [76] return [ ] ( main:0::fillscreen:2 [ ] ) + [73] return [ ] ( main:0::fillscreen:2 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log index 21a207ced..385958ac9 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -30,20 +30,17 @@ void scroll_soft() { *SCROLL = scroll; } -// Scroll the next bit from the current char onto the screen +// Scroll the next bit from the current char onto the screen - trigger next char if needed byte* current_chargen = CHARGEN; byte current_bit = 1; void scroll_bit() { - scroll_hard(); current_bit = current_bit>>1; if(current_bit==0) { word c = next_char(); - c = c<<1; - c = c<<1; - c = c<<1; - current_chargen = CHARGEN+c; + current_chargen = CHARGEN+c<<3; current_bit = $80; } + scroll_hard(); asm { sei } *PROCPORT = $32; byte* sc = SCREEN+40+39; @@ -51,7 +48,7 @@ void scroll_bit() { byte bits = current_chargen[r]; byte b = ' '; if((bits & current_bit) != 0) { - b = '*'; + b = 128+' '; } *sc = b; sc = sc+40; @@ -147,46 +144,42 @@ endproc // scroll_soft() (byte*) current_chargen ← (byte*) CHARGEN (byte) current_bit ← (byte) 1 proc (void()) scroll_bit() - (void~) scroll_bit::$0 ← call scroll_hard - (byte~) scroll_bit::$1 ← (byte) current_bit >> (byte) 1 - (byte) current_bit ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$2 ← (byte) current_bit == (byte) 0 - (boolean~) scroll_bit::$3 ← ! (boolean~) scroll_bit::$2 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - (byte~) scroll_bit::$4 ← call next_char - (word) scroll_bit::c ← (byte~) scroll_bit::$4 - (word~) scroll_bit::$5 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$5 - (word~) scroll_bit::$6 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$6 - (word~) scroll_bit::$7 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$7 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN + (word) scroll_bit::c - (byte*) current_chargen ← (byte*~) scroll_bit::$8 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte) current_bit ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + (byte~) scroll_bit::$3 ← call next_char + (word) scroll_bit::c ← (byte~) scroll_bit::$3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 + (byte*) current_chargen ← (byte*~) scroll_bit::$5 (byte) current_bit ← (byte) 128 scroll_bit::@1: + (void~) scroll_bit::$6 ← call scroll_hard asm { sei } *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$10 ← (byte*~) scroll_bit::$9 + (byte) 39 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$10 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 (byte) scroll_bit::r ← (byte) 0 scroll_bit::@2: - (byte~) scroll_bit::$11 ← (byte*) current_chargen *idx (byte) scroll_bit::r - (byte) scroll_bit::bits ← (byte~) scroll_bit::$11 + (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r + (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$13 ← (byte~) scroll_bit::$12 != (byte) 0 - (boolean~) scroll_bit::$14 ← ! (boolean~) scroll_bit::$13 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 - (byte) scroll_bit::b ← (byte) '*' + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 + (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte~) scroll_bit::$13 scroll_bit::@3: *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$15 ← (byte*) scroll_bit::sc + (byte) 40 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$15 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 *((byte*) PROCPORT) ← (byte) 55 asm { cli } scroll_bit::@return: @@ -315,23 +308,22 @@ SYMBOLS (byte*) nxt (byte) scroll (void()) scroll_bit() -(void~) scroll_bit::$0 -(byte~) scroll_bit::$1 -(byte*~) scroll_bit::$10 -(byte~) scroll_bit::$11 -(byte~) scroll_bit::$12 -(boolean~) scroll_bit::$13 -(boolean~) scroll_bit::$14 -(byte*~) scroll_bit::$15 -(boolean~) scroll_bit::$16 +(byte~) scroll_bit::$0 +(boolean~) scroll_bit::$1 +(byte~) scroll_bit::$10 +(boolean~) scroll_bit::$11 +(boolean~) scroll_bit::$12 +(byte~) scroll_bit::$13 +(byte*~) scroll_bit::$14 +(boolean~) scroll_bit::$15 (boolean~) scroll_bit::$2 -(boolean~) scroll_bit::$3 -(byte~) scroll_bit::$4 -(word~) scroll_bit::$5 -(word~) scroll_bit::$6 -(word~) scroll_bit::$7 +(byte~) scroll_bit::$3 +(word~) scroll_bit::$4 +(byte*~) scroll_bit::$5 +(void~) scroll_bit::$6 +(byte*~) scroll_bit::$7 (byte*~) scroll_bit::$8 -(byte*~) scroll_bit::$9 +(byte~) scroll_bit::$9 (label) scroll_bit::@1 (label) scroll_bit::@2 (label) scroll_bit::@3 @@ -453,53 +445,49 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 (byte) current_bit ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from - (void~) scroll_bit::$0 ← call scroll_hard - (byte~) scroll_bit::$1 ← (byte) current_bit >> (byte) 1 - (byte) current_bit ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$2 ← (byte) current_bit == (byte) 0 - (boolean~) scroll_bit::$3 ← ! (boolean~) scroll_bit::$2 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte) current_bit ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@4 + (void~) scroll_bit::$6 ← call scroll_hard asm { sei } *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$10 ← (byte*~) scroll_bit::$9 + (byte) 39 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$10 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 (byte) scroll_bit::r ← (byte) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$4 ← call next_char - (word) scroll_bit::c ← (byte~) scroll_bit::$4 - (word~) scroll_bit::$5 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$5 - (word~) scroll_bit::$6 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$6 - (word~) scroll_bit::$7 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$7 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN + (word) scroll_bit::c - (byte*) current_chargen ← (byte*~) scroll_bit::$8 + (byte~) scroll_bit::$3 ← call next_char + (word) scroll_bit::c ← (byte~) scroll_bit::$3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 + (byte*) current_chargen ← (byte*~) scroll_bit::$5 (byte) current_bit ← (byte) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte~) scroll_bit::$11 ← (byte*) current_chargen *idx (byte) scroll_bit::r - (byte) scroll_bit::bits ← (byte~) scroll_bit::$11 + (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r + (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$13 ← (byte~) scroll_bit::$12 != (byte) 0 - (boolean~) scroll_bit::$14 ← ! (boolean~) scroll_bit::$13 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$15 ← (byte*) scroll_bit::sc + (byte) 40 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$15 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b ← (byte) '*' + (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT) ← (byte) 55 @@ -679,53 +667,49 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 (byte) current_bit ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from - (void~) scroll_bit::$0 ← call scroll_hard - (byte~) scroll_bit::$1 ← (byte) current_bit >> (byte) 1 - (byte) current_bit ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$2 ← (byte) current_bit == (byte) 0 - (boolean~) scroll_bit::$3 ← ! (boolean~) scroll_bit::$2 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte) current_bit ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 to:scroll_bit::@4 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@4 + (void~) scroll_bit::$6 ← call scroll_hard asm { sei } *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$10 ← (byte*~) scroll_bit::$9 + (byte) 39 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$10 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 (byte) scroll_bit::r ← (byte) 0 to:scroll_bit::@2 scroll_bit::@4: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$4 ← call next_char - (word) scroll_bit::c ← (byte~) scroll_bit::$4 - (word~) scroll_bit::$5 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$5 - (word~) scroll_bit::$6 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$6 - (word~) scroll_bit::$7 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$7 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN + (word) scroll_bit::c - (byte*) current_chargen ← (byte*~) scroll_bit::$8 + (byte~) scroll_bit::$3 ← call next_char + (word) scroll_bit::c ← (byte~) scroll_bit::$3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 + (byte*) current_chargen ← (byte*~) scroll_bit::$5 (byte) current_bit ← (byte) 128 to:scroll_bit::@1 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte~) scroll_bit::$11 ← (byte*) current_chargen *idx (byte) scroll_bit::r - (byte) scroll_bit::bits ← (byte~) scroll_bit::$11 + (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r + (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$13 ← (byte~) scroll_bit::$12 != (byte) 0 - (boolean~) scroll_bit::$14 ← ! (boolean~) scroll_bit::$13 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$15 ← (byte*) scroll_bit::sc + (byte) 40 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$15 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b ← (byte) '*' + (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT) ← (byte) 55 @@ -925,59 +909,55 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 (byte) current_bit ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 + (byte~) scroll_bit::$0 ← (byte) current_bit >> (byte) 1 + (byte) current_bit ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$1 ← (byte) current_bit == (byte) 0 + (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit >> (byte) 1 - (byte) current_bit ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$2 ← (byte) current_bit == (byte) 0 - (boolean~) scroll_bit::$3 ← ! (boolean~) scroll_bit::$2 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN + (byte) 40 - (byte*~) scroll_bit::$10 ← (byte*~) scroll_bit::$9 + (byte) 39 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$10 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN + (byte) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$8 (byte) scroll_bit::r ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit (byte) next_char::return ← call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 - (byte~) scroll_bit::$4 ← (byte) next_char::return + (byte~) scroll_bit::$3 ← (byte) next_char::return (byte*) nxt ← (byte*) nxt - (word) scroll_bit::c ← (byte~) scroll_bit::$4 - (word~) scroll_bit::$5 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$5 - (word~) scroll_bit::$6 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$6 - (word~) scroll_bit::$7 ← (word) scroll_bit::c << (byte) 1 - (word) scroll_bit::c ← (word~) scroll_bit::$7 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN + (word) scroll_bit::c - (byte*) current_chargen ← (byte*~) scroll_bit::$8 + (word) scroll_bit::c ← (byte~) scroll_bit::$3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN + (word~) scroll_bit::$4 + (byte*) current_chargen ← (byte*~) scroll_bit::$5 (byte) current_bit ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte~) scroll_bit::$11 ← (byte*) current_chargen *idx (byte) scroll_bit::r - (byte) scroll_bit::bits ← (byte~) scroll_bit::$11 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte~) scroll_bit::$9 ← (byte*) current_chargen *idx (byte) scroll_bit::r + (byte) scroll_bit::bits ← (byte~) scroll_bit::$9 (byte) scroll_bit::b ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits & (byte) current_bit - (boolean~) scroll_bit::$13 ← (byte~) scroll_bit::$12 != (byte) 0 - (boolean~) scroll_bit::$14 ← ! (boolean~) scroll_bit::$13 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits & (byte) current_bit + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 *((byte*) scroll_bit::sc) ← (byte) scroll_bit::b - (byte*~) scroll_bit::$15 ← (byte*) scroll_bit::sc + (byte) 40 - (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$15 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc + (byte) 40 + (byte*) scroll_bit::sc ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r ← ++ (byte) scroll_bit::r - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b ← (byte) '*' + (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b ← (byte~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT) ← (byte) 55 @@ -1011,7 +991,7 @@ next_char::@return: scope:[next_char] from next_char::@1 (byte*) nxt ← (byte*) nxt return (byte) next_char::return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 (byte*~) scroll_hard::$1 ← (byte*) SCREEN + (byte~) scroll_hard::$0 (byte[]) scroll_hard::line0 ← (byte*~) scroll_hard::$1 @@ -1119,13 +1099,13 @@ CONTROL FLOW GRAPH SSA (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@1 main: scope:[main] from @6 - (byte*) TEXT#16 ← phi( @6/(byte*) TEXT#18 ) - (byte*) CHARGEN#14 ← phi( @6/(byte*) CHARGEN#16 ) + (byte*) TEXT#15 ← phi( @6/(byte*) TEXT#17 ) + (byte*) CHARGEN#13 ← phi( @6/(byte*) CHARGEN#15 ) (byte*) PROCPORT#17 ← phi( @6/(byte*) PROCPORT#19 ) (byte*) SCROLL#10 ← phi( @6/(byte*) SCROLL#12 ) (byte*) current_chargen#31 ← phi( @6/(byte*) current_chargen#21 ) - (byte*) nxt#38 ← phi( @6/(byte*) nxt#26 ) - (byte) current_bit#32 ← phi( @6/(byte) current_bit#24 ) + (byte*) nxt#37 ← phi( @6/(byte*) nxt#26 ) + (byte) current_bit#32 ← phi( @6/(byte) current_bit#23 ) (byte) scroll#22 ← phi( @6/(byte) scroll#15 ) (byte*) BGCOL#7 ← phi( @6/(byte*) BGCOL#8 ) (byte*) RASTER#5 ← phi( @6/(byte*) RASTER#7 ) @@ -1135,39 +1115,39 @@ main: scope:[main] from @6 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main - (byte*) TEXT#15 ← phi( main/(byte*) TEXT#16 ) - (byte*) CHARGEN#13 ← phi( main/(byte*) CHARGEN#14 ) - (byte*) PROCPORT#16 ← phi( main/(byte*) PROCPORT#17 ) + (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*) 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 ) - (byte*) nxt#36 ← phi( main/(byte*) nxt#38 ) + (byte*) nxt#35 ← phi( main/(byte*) nxt#37 ) (byte) current_bit#31 ← phi( main/(byte) current_bit#32 ) (byte) scroll#21 ← phi( main/(byte) scroll#22 ) (byte*) BGCOL#6 ← phi( main/(byte*) BGCOL#7 ) (byte*) RASTER#4 ← phi( main/(byte*) RASTER#5 ) to:main::@2 main::@1: scope:[main] from main::@8 - (byte*) TEXT#14 ← phi( main::@8/(byte*) TEXT#17 ) - (byte*) CHARGEN#12 ← phi( main::@8/(byte*) CHARGEN#15 ) - (byte*) PROCPORT#15 ← phi( main::@8/(byte*) PROCPORT#18 ) + (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*) 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 ) - (byte*) nxt#35 ← phi( main::@8/(byte*) nxt#0 ) + (byte*) nxt#34 ← phi( main::@8/(byte*) nxt#0 ) (byte) current_bit#30 ← phi( main::@8/(byte) current_bit#0 ) (byte) scroll#20 ← phi( main::@8/(byte) scroll#0 ) (byte*) BGCOL#5 ← phi( main::@8/(byte*) BGCOL#2 ) (byte*) RASTER#3 ← phi( main::@8/(byte*) RASTER#6 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#14 main::@2/(byte*) TEXT#13 main::@7/(byte*) TEXT#15 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#12 main::@2/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#13 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#15 main::@2/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#16 ) + (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*) 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 ) - (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#35 main::@2/(byte*) nxt#31 main::@7/(byte*) nxt#36 ) + (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#34 main::@2/(byte*) nxt#31 main::@7/(byte*) nxt#35 ) (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#30 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#31 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#20 main::@2/(byte) scroll#18 main::@7/(byte) scroll#21 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#5 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#6 ) @@ -1176,14 +1156,14 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (byte*) TEXT#12 ← phi( main::@2/(byte*) TEXT#13 main::@3/(byte*) TEXT#12 ) - (byte*) CHARGEN#10 ← phi( main::@2/(byte*) CHARGEN#11 main::@3/(byte*) CHARGEN#10 ) - (byte*) PROCPORT#13 ← phi( main::@2/(byte*) PROCPORT#14 main::@3/(byte*) PROCPORT#13 ) + (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*) 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 ) (byte*) nxt#27 ← phi( main::@2/(byte*) nxt#31 main::@3/(byte*) nxt#27 ) - (byte) current_bit#25 ← phi( main::@2/(byte) current_bit#29 main::@3/(byte) current_bit#25 ) + (byte) current_bit#24 ← phi( main::@2/(byte) current_bit#29 main::@3/(byte) current_bit#24 ) (byte) scroll#16 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#16 ) (byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#3 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) @@ -1191,25 +1171,25 @@ main::@3: scope:[main] from main::@2 main::@3 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 - (byte*) TEXT#11 ← phi( main::@3/(byte*) TEXT#12 ) - (byte*) CHARGEN#9 ← phi( main::@3/(byte*) CHARGEN#10 ) + (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*) PROCPORT#12 ← phi( main::@3/(byte*) PROCPORT#13 ) - (byte*) SCREEN#13 ← phi( main::@3/(byte*) SCREEN#15 ) (byte*) RASTER#8 ← phi( main::@3/(byte*) RASTER#2 ) (byte*) SCROLL#4 ← phi( main::@3/(byte*) SCROLL#6 ) (byte*) current_chargen#15 ← phi( main::@3/(byte*) current_chargen#22 ) (byte*) nxt#21 ← phi( main::@3/(byte*) nxt#27 ) - (byte) current_bit#17 ← phi( main::@3/(byte) current_bit#25 ) + (byte) current_bit#17 ← phi( main::@3/(byte) current_bit#24 ) (byte) scroll#13 ← phi( main::@3/(byte) scroll#16 ) (byte*) BGCOL#1 ← phi( main::@3/(byte*) BGCOL#3 ) *((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1) call scroll_soft param-assignment to:main::@8 main::@8: scope:[main] from main::@5 - (byte*) TEXT#17 ← phi( main::@5/(byte*) TEXT#11 ) - (byte*) CHARGEN#15 ← phi( main::@5/(byte*) CHARGEN#9 ) + (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*) PROCPORT#18 ← phi( main::@5/(byte*) PROCPORT#12 ) - (byte*) SCREEN#19 ← phi( main::@5/(byte*) SCREEN#13 ) (byte*) SCROLL#11 ← phi( main::@5/(byte*) SCROLL#4 ) (byte*) RASTER#6 ← phi( main::@5/(byte*) RASTER#8 ) (byte*) BGCOL#2 ← phi( main::@5/(byte*) BGCOL#1 ) @@ -1240,19 +1220,19 @@ 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#14 ← phi( @begin/(byte*) SCREEN#0 ) + (byte*) SCREEN#13 ← 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) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 - (byte*) TEXT#10 ← phi( main::@5/(byte*) TEXT#11 ) - (byte*) CHARGEN#8 ← phi( main::@5/(byte*) CHARGEN#9 ) + (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*) PROCPORT#11 ← phi( main::@5/(byte*) PROCPORT#12 ) - (byte*) SCREEN#11 ← phi( main::@5/(byte*) SCREEN#13 ) (byte*) current_chargen#23 ← phi( main::@5/(byte*) current_chargen#15 ) (byte*) nxt#28 ← phi( main::@5/(byte*) nxt#21 ) - (byte) current_bit#26 ← phi( main::@5/(byte) current_bit#17 ) + (byte) current_bit#25 ← phi( main::@5/(byte) current_bit#17 ) (byte*) SCROLL#2 ← phi( main::@5/(byte*) SCROLL#4 ) (byte) scroll#9 ← phi( main::@5/(byte) scroll#13 ) (byte) scroll#3 ← -- (byte) scroll#9 @@ -1263,20 +1243,20 @@ scroll_soft: scope:[scroll_soft] from main::@5 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#17 ← phi( scroll_soft/(byte*) current_chargen#23 scroll_soft::@3/(byte*) current_chargen#2 ) (byte*) nxt#23 ← phi( scroll_soft/(byte*) nxt#28 scroll_soft::@3/(byte*) nxt#2 ) - (byte) current_bit#19 ← phi( scroll_soft/(byte) current_bit#26 scroll_soft::@3/(byte) current_bit#2 ) + (byte) current_bit#19 ← phi( scroll_soft/(byte) current_bit#25 scroll_soft::@3/(byte) current_bit#2 ) (byte*) SCROLL#1 ← phi( scroll_soft/(byte*) SCROLL#2 scroll_soft::@3/(byte*) SCROLL#3 ) (byte) scroll#10 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(byte) scroll#14 ) *((byte*) SCROLL#1) ← (byte) scroll#10 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte*) TEXT#9 ← phi( scroll_soft/(byte*) TEXT#10 ) - (byte*) CHARGEN#7 ← phi( scroll_soft/(byte*) CHARGEN#8 ) - (byte*) PROCPORT#10 ← phi( scroll_soft/(byte*) PROCPORT#11 ) - (byte*) SCREEN#8 ← phi( scroll_soft/(byte*) SCREEN#11 ) + (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*) 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 ) (byte*) nxt#22 ← phi( scroll_soft/(byte*) nxt#28 ) - (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#26 ) + (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#25 ) (byte) scroll#4 ← (byte) 7 call scroll_bit param-assignment to:scroll_soft::@3 @@ -1307,134 +1287,128 @@ 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#12 ← phi( @1/(byte*) SCREEN#14 ) + (byte*) SCREEN#11 ← phi( @1/(byte*) SCREEN#13 ) (byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) current_chargen#4 ← (byte*) CHARGEN#1 (byte) current_bit#4 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte*) TEXT#8 ← phi( scroll_soft::@2/(byte*) TEXT#9 ) - (byte*) CHARGEN#6 ← phi( scroll_soft::@2/(byte*) CHARGEN#7 ) - (byte*) nxt#32 ← phi( scroll_soft::@2/(byte*) nxt#22 ) + (byte*) TEXT#7 ← phi( scroll_soft::@2/(byte*) TEXT#8 ) (byte*) current_chargen#28 ← phi( scroll_soft::@2/(byte*) current_chargen#16 ) - (byte*) PROCPORT#6 ← phi( scroll_soft::@2/(byte*) PROCPORT#10 ) - (byte*) SCREEN#7 ← phi( scroll_soft::@2/(byte*) SCREEN#8 ) - (byte) current_bit#20 ← phi( scroll_soft::@2/(byte) current_bit#18 ) + (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*) 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) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte) 0 + (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +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*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#5 scroll_bit::@8/(byte*) PROCPORT#6 ) call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte*) TEXT#7 ← phi( scroll_bit/(byte*) TEXT#8 ) - (byte*) CHARGEN#5 ← phi( scroll_bit/(byte*) CHARGEN#6 ) - (byte*) nxt#29 ← phi( scroll_bit/(byte*) nxt#32 ) - (byte*) current_chargen#24 ← phi( scroll_bit/(byte*) current_chargen#28 ) - (byte*) SCREEN#5 ← phi( scroll_bit/(byte*) SCREEN#7 ) - (byte*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#6 ) - (byte) current_bit#13 ← phi( scroll_bit/(byte) current_bit#20 ) - (byte~) scroll_bit::$1 ← (byte) current_bit#13 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$2 ← (byte) current_bit#5 == (byte) 0 - (boolean~) scroll_bit::$3 ← ! (boolean~) scroll_bit::$2 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#29 scroll_bit::@8/(byte*) nxt#4 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#24 scroll_bit::@8/(byte*) current_chargen#5 ) - (byte*) SCREEN#2 ← phi( scroll_bit::@7/(byte*) SCREEN#5 scroll_bit::@8/(byte*) SCREEN#6 ) - (byte*) PROCPORT#1 ← phi( scroll_bit::@7/(byte*) PROCPORT#3 scroll_bit::@8/(byte*) PROCPORT#4 ) +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 + (byte*) nxt#36 ← phi( scroll_bit::@1/(byte*) nxt#38 ) + (byte) current_bit#21 ← phi( scroll_bit::@1/(byte) current_bit#26 ) + (byte*) current_chargen#19 ← phi( scroll_bit::@1/(byte*) current_chargen#24 ) + (byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) + (byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 ) asm { sei } *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#2 + (byte) 40 - (byte*~) scroll_bit::$10 ← (byte*~) scroll_bit::$9 + (byte) 39 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$10 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$8 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 - (byte*) TEXT#6 ← phi( scroll_bit::@7/(byte*) TEXT#7 ) - (byte*) SCREEN#9 ← phi( scroll_bit::@7/(byte*) SCREEN#5 ) - (byte*) PROCPORT#7 ← phi( scroll_bit::@7/(byte*) PROCPORT#3 ) - (byte*) CHARGEN#4 ← phi( scroll_bit::@7/(byte*) CHARGEN#5 ) - (byte*) nxt#24 ← phi( scroll_bit::@7/(byte*) nxt#29 ) +scroll_bit::@4: scope:[scroll_bit] from scroll_bit + (byte*) SCREEN#10 ← phi( scroll_bit/(byte*) SCREEN#6 ) + (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 ) + (byte*) nxt#24 ← phi( scroll_bit/(byte*) nxt#29 ) (byte) next_char::return#0 ← call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 - (byte*) SCREEN#6 ← phi( scroll_bit::@4/(byte*) SCREEN#9 ) - (byte*) PROCPORT#4 ← phi( scroll_bit::@4/(byte*) PROCPORT#7 ) + (byte*) SCREEN#7 ← phi( scroll_bit::@4/(byte*) SCREEN#10 ) + (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#24 ) (byte) next_char::return#3 ← phi( scroll_bit::@4/(byte) next_char::return#0 ) - (byte~) scroll_bit::$4 ← (byte) next_char::return#3 + (byte~) scroll_bit::$3 ← (byte) next_char::return#3 (byte*) nxt#4 ← (byte*) nxt#15 - (word) scroll_bit::c#0 ← (byte~) scroll_bit::$4 - (word~) scroll_bit::$5 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#1 ← (word~) scroll_bit::$5 - (word~) scroll_bit::$6 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#2 ← (word~) scroll_bit::$6 - (word~) scroll_bit::$7 ← (word) scroll_bit::c#2 << (byte) 1 - (word) scroll_bit::c#3 ← (word~) scroll_bit::$7 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#2 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word) scroll_bit::c#0 ← (byte~) scroll_bit::$3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#2 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) nxt#33 ← phi( scroll_bit::@1/(byte*) nxt#37 scroll_bit::@3/(byte*) nxt#30 ) - (byte*) PROCPORT#8 ← phi( scroll_bit::@1/(byte*) PROCPORT#1 scroll_bit::@3/(byte*) PROCPORT#5 ) - (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) current_bit#14 ← phi( scroll_bit::@1/(byte) current_bit#21 scroll_bit::@3/(byte) current_bit#22 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte*) current_chargen#12 ← phi( scroll_bit::@1/(byte*) current_chargen#18 scroll_bit::@3/(byte*) current_chargen#19 ) - (byte~) scroll_bit::$11 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 - (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$11 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#30 scroll_bit::@7/(byte*) nxt#36 ) + (byte*) PROCPORT#7 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 scroll_bit::@7/(byte*) PROCPORT#1 ) + (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) current_bit#14 ← phi( scroll_bit::@3/(byte) current_bit#20 scroll_bit::@7/(byte) current_bit#21 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte*) current_chargen#12 ← phi( scroll_bit::@3/(byte*) current_chargen#18 scroll_bit::@7/(byte*) current_chargen#19 ) + (byte~) scroll_bit::$9 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 + (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$9 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$13 ← (byte~) scroll_bit::$12 != (byte) 0 - (boolean~) scroll_bit::$14 ← ! (boolean~) scroll_bit::$13 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte*) nxt#30 ← phi( scroll_bit::@2/(byte*) nxt#33 scroll_bit::@5/(byte*) nxt#34 ) - (byte*) PROCPORT#5 ← phi( scroll_bit::@2/(byte*) PROCPORT#8 scroll_bit::@5/(byte*) PROCPORT#9 ) - (byte) current_bit#22 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#27 ) - (byte*) current_chargen#19 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#25 ) + (byte*) nxt#30 ← phi( scroll_bit::@2/(byte*) nxt#32 scroll_bit::@5/(byte*) nxt#33 ) + (byte*) PROCPORT#4 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 scroll_bit::@5/(byte*) PROCPORT#8 ) + (byte) current_bit#20 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#27 ) + (byte*) current_chargen#18 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#25 ) (byte) scroll_bit::r#3 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 scroll_bit::@5/(byte) scroll_bit::r#4 ) (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 scroll_bit::@5/(byte*) scroll_bit::sc#4 ) (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*~) scroll_bit::$15 ← (byte*) scroll_bit::sc#2 + (byte) 40 - (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$15 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r#1 != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte*) nxt#34 ← phi( scroll_bit::@2/(byte*) nxt#33 ) - (byte*) PROCPORT#9 ← phi( scroll_bit::@2/(byte*) PROCPORT#8 ) + (byte*) nxt#33 ← phi( scroll_bit::@2/(byte*) nxt#32 ) + (byte*) PROCPORT#8 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 ) (byte) current_bit#27 ← phi( scroll_bit::@2/(byte) current_bit#14 ) (byte*) current_chargen#25 ← phi( scroll_bit::@2/(byte*) current_chargen#12 ) (byte) scroll_bit::r#4 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 ) (byte*) scroll_bit::sc#4 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 ) - (byte) scroll_bit::b#1 ← (byte) '*' + (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#19 ) + (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#18 ) (byte*) nxt#25 ← phi( scroll_bit::@3/(byte*) nxt#30 ) - (byte) current_bit#23 ← phi( scroll_bit::@3/(byte) current_bit#22 ) - (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#5 ) + (byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 ) + (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 ) *((byte*) PROCPORT#2) ← (byte) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 (byte*) current_chargen#13 ← phi( scroll_bit::@6/(byte*) current_chargen#20 ) (byte*) nxt#16 ← phi( scroll_bit::@6/(byte*) nxt#25 ) - (byte) current_bit#15 ← phi( scroll_bit::@6/(byte) current_bit#23 ) + (byte) current_bit#15 ← phi( scroll_bit::@6/(byte) current_bit#22 ) (byte) current_bit#7 ← (byte) current_bit#15 (byte*) nxt#5 ← (byte*) nxt#16 (byte*) current_chargen#6 ← (byte*) current_chargen#13 return to:@return @3: scope:[] from @2 - (byte*) CHARGEN#17 ← phi( @2/(byte*) CHARGEN#1 ) + (byte*) CHARGEN#16 ← phi( @2/(byte*) CHARGEN#1 ) (byte*) PROCPORT#20 ← phi( @2/(byte*) PROCPORT#21 ) (byte*) SCROLL#13 ← phi( @2/(byte*) SCROLL#14 ) (byte*) BGCOL#9 ← phi( @2/(byte*) BGCOL#10 ) @@ -1442,7 +1416,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#10 ← phi( @2/(byte*) SCREEN#12 ) + (byte*) SCREEN#8 ← phi( @2/(byte*) SCREEN#11 ) (byte*) TEXT#1 ← phi( @2/(byte*) TEXT#3 ) (byte*) nxt#6 ← (byte*) TEXT#1 to:@6 @@ -1472,8 +1446,8 @@ next_char::@return: scope:[next_char] from next_char::@1 (byte*) nxt#9 ← (byte*) nxt#19 return (byte) next_char::return#2 to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit - (byte*) SCREEN#3 ← phi( scroll_bit/(byte*) SCREEN#7 ) +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 + (byte*) SCREEN#3 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$0 (byte[]) scroll_hard::line0#0 ← (byte*~) scroll_hard::$1 @@ -1560,23 +1534,23 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 return to:@return @6: scope:[] from @3 - (byte*) TEXT#18 ← phi( @3/(byte*) TEXT#1 ) - (byte*) CHARGEN#16 ← phi( @3/(byte*) CHARGEN#17 ) + (byte*) TEXT#17 ← phi( @3/(byte*) TEXT#1 ) + (byte*) CHARGEN#15 ← phi( @3/(byte*) CHARGEN#16 ) (byte*) PROCPORT#19 ← phi( @3/(byte*) PROCPORT#20 ) (byte*) SCROLL#12 ← phi( @3/(byte*) SCROLL#13 ) (byte*) BGCOL#8 ← phi( @3/(byte*) BGCOL#9 ) (byte*) RASTER#7 ← phi( @3/(byte*) RASTER#9 ) (byte*) current_chargen#21 ← phi( @3/(byte*) current_chargen#26 ) (byte*) nxt#26 ← phi( @3/(byte*) nxt#6 ) - (byte) current_bit#24 ← phi( @3/(byte) current_bit#28 ) + (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#10 ) + (byte*) SCREEN#4 ← phi( @3/(byte*) SCREEN#8 ) call main param-assignment to:@7 @7: scope:[] from @6 (byte*) current_chargen#14 ← phi( @6/(byte*) current_chargen#21 ) (byte*) nxt#20 ← phi( @6/(byte*) nxt#26 ) - (byte) current_bit#16 ← phi( @6/(byte) current_bit#24 ) + (byte) current_bit#16 ← phi( @6/(byte) current_bit#23 ) (byte) scroll#12 ← phi( @6/(byte) scroll#15 ) (byte) scroll#6 ← (byte) scroll#12 (byte) current_bit#8 ← (byte) current_bit#16 @@ -1596,13 +1570,13 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@1 main: scope:[main] from @6 - (byte*) TEXT#16 ← phi( @6/(byte*) TEXT#18 ) - (byte*) CHARGEN#14 ← phi( @6/(byte*) CHARGEN#16 ) + (byte*) TEXT#15 ← phi( @6/(byte*) TEXT#17 ) + (byte*) CHARGEN#13 ← phi( @6/(byte*) CHARGEN#15 ) (byte*) PROCPORT#17 ← phi( @6/(byte*) PROCPORT#19 ) (byte*) SCROLL#10 ← phi( @6/(byte*) SCROLL#12 ) (byte*) current_chargen#31 ← phi( @6/(byte*) current_chargen#21 ) - (byte*) nxt#38 ← phi( @6/(byte*) nxt#26 ) - (byte) current_bit#32 ← phi( @6/(byte) current_bit#24 ) + (byte*) nxt#37 ← phi( @6/(byte*) nxt#26 ) + (byte) current_bit#32 ← phi( @6/(byte) current_bit#23 ) (byte) scroll#22 ← phi( @6/(byte) scroll#15 ) (byte*) BGCOL#7 ← phi( @6/(byte*) BGCOL#8 ) (byte*) RASTER#5 ← phi( @6/(byte*) RASTER#7 ) @@ -1612,39 +1586,39 @@ main: scope:[main] from @6 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main - (byte*) TEXT#15 ← phi( main/(byte*) TEXT#16 ) - (byte*) CHARGEN#13 ← phi( main/(byte*) CHARGEN#14 ) - (byte*) PROCPORT#16 ← phi( main/(byte*) PROCPORT#17 ) + (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*) 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 ) - (byte*) nxt#36 ← phi( main/(byte*) nxt#38 ) + (byte*) nxt#35 ← phi( main/(byte*) nxt#37 ) (byte) current_bit#31 ← phi( main/(byte) current_bit#32 ) (byte) scroll#21 ← phi( main/(byte) scroll#22 ) (byte*) BGCOL#6 ← phi( main/(byte*) BGCOL#7 ) (byte*) RASTER#4 ← phi( main/(byte*) RASTER#5 ) to:main::@2 main::@1: scope:[main] from main::@8 - (byte*) TEXT#14 ← phi( main::@8/(byte*) TEXT#17 ) - (byte*) CHARGEN#12 ← phi( main::@8/(byte*) CHARGEN#15 ) - (byte*) PROCPORT#15 ← phi( main::@8/(byte*) PROCPORT#18 ) + (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*) 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 ) - (byte*) nxt#35 ← phi( main::@8/(byte*) nxt#0 ) + (byte*) nxt#34 ← phi( main::@8/(byte*) nxt#0 ) (byte) current_bit#30 ← phi( main::@8/(byte) current_bit#0 ) (byte) scroll#20 ← phi( main::@8/(byte) scroll#0 ) (byte*) BGCOL#5 ← phi( main::@8/(byte*) BGCOL#2 ) (byte*) RASTER#3 ← phi( main::@8/(byte*) RASTER#6 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#14 main::@2/(byte*) TEXT#13 main::@7/(byte*) TEXT#15 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#12 main::@2/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#13 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#15 main::@2/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#16 ) + (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*) 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 ) - (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#35 main::@2/(byte*) nxt#31 main::@7/(byte*) nxt#36 ) + (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#34 main::@2/(byte*) nxt#31 main::@7/(byte*) nxt#35 ) (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#30 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#31 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#20 main::@2/(byte) scroll#18 main::@7/(byte) scroll#21 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#5 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#6 ) @@ -1653,14 +1627,14 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (byte*) TEXT#12 ← phi( main::@2/(byte*) TEXT#13 main::@3/(byte*) TEXT#12 ) - (byte*) CHARGEN#10 ← phi( main::@2/(byte*) CHARGEN#11 main::@3/(byte*) CHARGEN#10 ) - (byte*) PROCPORT#13 ← phi( main::@2/(byte*) PROCPORT#14 main::@3/(byte*) PROCPORT#13 ) + (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*) 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 ) (byte*) nxt#27 ← phi( main::@2/(byte*) nxt#31 main::@3/(byte*) nxt#27 ) - (byte) current_bit#25 ← phi( main::@2/(byte) current_bit#29 main::@3/(byte) current_bit#25 ) + (byte) current_bit#24 ← phi( main::@2/(byte) current_bit#29 main::@3/(byte) current_bit#24 ) (byte) scroll#16 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#16 ) (byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#3 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) @@ -1668,25 +1642,25 @@ main::@3: scope:[main] from main::@2 main::@3 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 - (byte*) TEXT#11 ← phi( main::@3/(byte*) TEXT#12 ) - (byte*) CHARGEN#9 ← phi( main::@3/(byte*) CHARGEN#10 ) + (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*) PROCPORT#12 ← phi( main::@3/(byte*) PROCPORT#13 ) - (byte*) SCREEN#13 ← phi( main::@3/(byte*) SCREEN#15 ) (byte*) RASTER#8 ← phi( main::@3/(byte*) RASTER#2 ) (byte*) SCROLL#4 ← phi( main::@3/(byte*) SCROLL#6 ) (byte*) current_chargen#15 ← phi( main::@3/(byte*) current_chargen#22 ) (byte*) nxt#21 ← phi( main::@3/(byte*) nxt#27 ) - (byte) current_bit#17 ← phi( main::@3/(byte) current_bit#25 ) + (byte) current_bit#17 ← phi( main::@3/(byte) current_bit#24 ) (byte) scroll#13 ← phi( main::@3/(byte) scroll#16 ) (byte*) BGCOL#1 ← phi( main::@3/(byte*) BGCOL#3 ) *((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1) call scroll_soft param-assignment to:main::@8 main::@8: scope:[main] from main::@5 - (byte*) TEXT#17 ← phi( main::@5/(byte*) TEXT#11 ) - (byte*) CHARGEN#15 ← phi( main::@5/(byte*) CHARGEN#9 ) + (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*) PROCPORT#18 ← phi( main::@5/(byte*) PROCPORT#12 ) - (byte*) SCREEN#19 ← phi( main::@5/(byte*) SCREEN#13 ) (byte*) SCROLL#11 ← phi( main::@5/(byte*) SCROLL#4 ) (byte*) RASTER#6 ← phi( main::@5/(byte*) RASTER#8 ) (byte*) BGCOL#2 ← phi( main::@5/(byte*) BGCOL#1 ) @@ -1717,19 +1691,19 @@ 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#14 ← phi( @begin/(byte*) SCREEN#0 ) + (byte*) SCREEN#13 ← 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) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 - (byte*) TEXT#10 ← phi( main::@5/(byte*) TEXT#11 ) - (byte*) CHARGEN#8 ← phi( main::@5/(byte*) CHARGEN#9 ) + (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*) PROCPORT#11 ← phi( main::@5/(byte*) PROCPORT#12 ) - (byte*) SCREEN#11 ← phi( main::@5/(byte*) SCREEN#13 ) (byte*) current_chargen#23 ← phi( main::@5/(byte*) current_chargen#15 ) (byte*) nxt#28 ← phi( main::@5/(byte*) nxt#21 ) - (byte) current_bit#26 ← phi( main::@5/(byte) current_bit#17 ) + (byte) current_bit#25 ← phi( main::@5/(byte) current_bit#17 ) (byte*) SCROLL#2 ← phi( main::@5/(byte*) SCROLL#4 ) (byte) scroll#9 ← phi( main::@5/(byte) scroll#13 ) (byte) scroll#3 ← -- (byte) scroll#9 @@ -1740,20 +1714,20 @@ scroll_soft: scope:[scroll_soft] from main::@5 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#17 ← phi( scroll_soft/(byte*) current_chargen#23 scroll_soft::@3/(byte*) current_chargen#2 ) (byte*) nxt#23 ← phi( scroll_soft/(byte*) nxt#28 scroll_soft::@3/(byte*) nxt#2 ) - (byte) current_bit#19 ← phi( scroll_soft/(byte) current_bit#26 scroll_soft::@3/(byte) current_bit#2 ) + (byte) current_bit#19 ← phi( scroll_soft/(byte) current_bit#25 scroll_soft::@3/(byte) current_bit#2 ) (byte*) SCROLL#1 ← phi( scroll_soft/(byte*) SCROLL#2 scroll_soft::@3/(byte*) SCROLL#3 ) (byte) scroll#10 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(byte) scroll#14 ) *((byte*) SCROLL#1) ← (byte) scroll#10 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte*) TEXT#9 ← phi( scroll_soft/(byte*) TEXT#10 ) - (byte*) CHARGEN#7 ← phi( scroll_soft/(byte*) CHARGEN#8 ) - (byte*) PROCPORT#10 ← phi( scroll_soft/(byte*) PROCPORT#11 ) - (byte*) SCREEN#8 ← phi( scroll_soft/(byte*) SCREEN#11 ) + (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*) 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 ) (byte*) nxt#22 ← phi( scroll_soft/(byte*) nxt#28 ) - (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#26 ) + (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#25 ) (byte) scroll#4 ← (byte) 7 call scroll_bit param-assignment to:scroll_soft::@3 @@ -1784,135 +1758,129 @@ 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#12 ← phi( @1/(byte*) SCREEN#14 ) + (byte*) SCREEN#11 ← phi( @1/(byte*) SCREEN#13 ) (byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) current_chargen#4 ← (byte*) CHARGEN#1 (byte) current_bit#4 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte*) TEXT#8 ← phi( scroll_soft::@2/(byte*) TEXT#9 ) - (byte*) CHARGEN#6 ← phi( scroll_soft::@2/(byte*) CHARGEN#7 ) - (byte*) nxt#32 ← phi( scroll_soft::@2/(byte*) nxt#22 ) + (byte*) TEXT#7 ← phi( scroll_soft::@2/(byte*) TEXT#8 ) (byte*) current_chargen#28 ← phi( scroll_soft::@2/(byte*) current_chargen#16 ) - (byte*) PROCPORT#6 ← phi( scroll_soft::@2/(byte*) PROCPORT#10 ) - (byte*) SCREEN#7 ← phi( scroll_soft::@2/(byte*) SCREEN#8 ) - (byte) current_bit#20 ← phi( scroll_soft::@2/(byte) current_bit#18 ) + (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*) 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) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte) 0 + (boolean~) scroll_bit::$2 ← ! (boolean~) scroll_bit::$1 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +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*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#5 scroll_bit::@8/(byte*) PROCPORT#6 ) call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte*) TEXT#7 ← phi( scroll_bit/(byte*) TEXT#8 ) - (byte*) CHARGEN#5 ← phi( scroll_bit/(byte*) CHARGEN#6 ) - (byte*) nxt#29 ← phi( scroll_bit/(byte*) nxt#32 ) - (byte*) current_chargen#24 ← phi( scroll_bit/(byte*) current_chargen#28 ) - (byte*) SCREEN#5 ← phi( scroll_bit/(byte*) SCREEN#7 ) - (byte*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#6 ) - (byte) current_bit#13 ← phi( scroll_bit/(byte) current_bit#20 ) - (byte~) scroll_bit::$1 ← (byte) current_bit#13 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$2 ← (byte) current_bit#5 == (byte) 0 - (boolean~) scroll_bit::$3 ← ! (boolean~) scroll_bit::$2 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#29 scroll_bit::@8/(byte*) nxt#4 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#24 scroll_bit::@8/(byte*) current_chargen#5 ) - (byte*) SCREEN#2 ← phi( scroll_bit::@7/(byte*) SCREEN#5 scroll_bit::@8/(byte*) SCREEN#6 ) - (byte*) PROCPORT#1 ← phi( scroll_bit::@7/(byte*) PROCPORT#3 scroll_bit::@8/(byte*) PROCPORT#4 ) +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 + (byte*) nxt#36 ← phi( scroll_bit::@1/(byte*) nxt#38 ) + (byte) current_bit#21 ← phi( scroll_bit::@1/(byte) current_bit#26 ) + (byte*) current_chargen#19 ← phi( scroll_bit::@1/(byte*) current_chargen#24 ) + (byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) + (byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 ) asm { sei } *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#2 + (byte) 40 - (byte*~) scroll_bit::$10 ← (byte*~) scroll_bit::$9 + (byte) 39 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$10 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$8 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 - (byte*) TEXT#6 ← phi( scroll_bit::@7/(byte*) TEXT#7 ) - (byte*) SCREEN#9 ← phi( scroll_bit::@7/(byte*) SCREEN#5 ) - (byte*) PROCPORT#7 ← phi( scroll_bit::@7/(byte*) PROCPORT#3 ) - (byte*) CHARGEN#4 ← phi( scroll_bit::@7/(byte*) CHARGEN#5 ) - (byte*) nxt#24 ← phi( scroll_bit::@7/(byte*) nxt#29 ) +scroll_bit::@4: scope:[scroll_bit] from scroll_bit + (byte*) SCREEN#10 ← phi( scroll_bit/(byte*) SCREEN#6 ) + (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 ) + (byte*) nxt#24 ← phi( scroll_bit/(byte*) nxt#29 ) call next_char param-assignment (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#6 ← phi( scroll_bit::@4/(byte*) SCREEN#9 ) - (byte*) PROCPORT#4 ← phi( scroll_bit::@4/(byte*) PROCPORT#7 ) + (byte*) SCREEN#7 ← phi( scroll_bit::@4/(byte*) SCREEN#10 ) + (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 ) (byte) next_char::return#3 ← phi( scroll_bit::@4/(byte) next_char::return#0 ) - (byte~) scroll_bit::$4 ← (byte) next_char::return#3 + (byte~) scroll_bit::$3 ← (byte) next_char::return#3 (byte*) nxt#4 ← (byte*) nxt#15 - (word) scroll_bit::c#0 ← (byte~) scroll_bit::$4 - (word~) scroll_bit::$5 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#1 ← (word~) scroll_bit::$5 - (word~) scroll_bit::$6 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#2 ← (word~) scroll_bit::$6 - (word~) scroll_bit::$7 ← (word) scroll_bit::c#2 << (byte) 1 - (word) scroll_bit::c#3 ← (word~) scroll_bit::$7 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#2 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word) scroll_bit::c#0 ← (byte~) scroll_bit::$3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#2 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) nxt#33 ← phi( scroll_bit::@1/(byte*) nxt#37 scroll_bit::@3/(byte*) nxt#30 ) - (byte*) PROCPORT#8 ← phi( scroll_bit::@1/(byte*) PROCPORT#1 scroll_bit::@3/(byte*) PROCPORT#5 ) - (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) current_bit#14 ← phi( scroll_bit::@1/(byte) current_bit#21 scroll_bit::@3/(byte) current_bit#22 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte*) current_chargen#12 ← phi( scroll_bit::@1/(byte*) current_chargen#18 scroll_bit::@3/(byte*) current_chargen#19 ) - (byte~) scroll_bit::$11 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 - (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$11 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#30 scroll_bit::@7/(byte*) nxt#36 ) + (byte*) PROCPORT#7 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 scroll_bit::@7/(byte*) PROCPORT#1 ) + (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) current_bit#14 ← phi( scroll_bit::@3/(byte) current_bit#20 scroll_bit::@7/(byte) current_bit#21 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte*) current_chargen#12 ← phi( scroll_bit::@3/(byte*) current_chargen#18 scroll_bit::@7/(byte*) current_chargen#19 ) + (byte~) scroll_bit::$9 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 + (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$9 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$13 ← (byte~) scroll_bit::$12 != (byte) 0 - (boolean~) scroll_bit::$14 ← ! (boolean~) scroll_bit::$13 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 + (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 + (boolean~) scroll_bit::$12 ← ! (boolean~) scroll_bit::$11 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte*) nxt#30 ← phi( scroll_bit::@2/(byte*) nxt#33 scroll_bit::@5/(byte*) nxt#34 ) - (byte*) PROCPORT#5 ← phi( scroll_bit::@2/(byte*) PROCPORT#8 scroll_bit::@5/(byte*) PROCPORT#9 ) - (byte) current_bit#22 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#27 ) - (byte*) current_chargen#19 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#25 ) + (byte*) nxt#30 ← phi( scroll_bit::@2/(byte*) nxt#32 scroll_bit::@5/(byte*) nxt#33 ) + (byte*) PROCPORT#4 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 scroll_bit::@5/(byte*) PROCPORT#8 ) + (byte) current_bit#20 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#27 ) + (byte*) current_chargen#18 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#25 ) (byte) scroll_bit::r#3 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 scroll_bit::@5/(byte) scroll_bit::r#4 ) (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 scroll_bit::@5/(byte*) scroll_bit::sc#4 ) (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*~) scroll_bit::$15 ← (byte*) scroll_bit::sc#2 + (byte) 40 - (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$15 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r#1 != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte*) nxt#34 ← phi( scroll_bit::@2/(byte*) nxt#33 ) - (byte*) PROCPORT#9 ← phi( scroll_bit::@2/(byte*) PROCPORT#8 ) + (byte*) nxt#33 ← phi( scroll_bit::@2/(byte*) nxt#32 ) + (byte*) PROCPORT#8 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 ) (byte) current_bit#27 ← phi( scroll_bit::@2/(byte) current_bit#14 ) (byte*) current_chargen#25 ← phi( scroll_bit::@2/(byte*) current_chargen#12 ) (byte) scroll_bit::r#4 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 ) (byte*) scroll_bit::sc#4 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 ) - (byte) scroll_bit::b#1 ← (byte) '*' + (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#19 ) + (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#18 ) (byte*) nxt#25 ← phi( scroll_bit::@3/(byte*) nxt#30 ) - (byte) current_bit#23 ← phi( scroll_bit::@3/(byte) current_bit#22 ) - (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#5 ) + (byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 ) + (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 ) *((byte*) PROCPORT#2) ← (byte) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 (byte*) current_chargen#13 ← phi( scroll_bit::@6/(byte*) current_chargen#20 ) (byte*) nxt#16 ← phi( scroll_bit::@6/(byte*) nxt#25 ) - (byte) current_bit#15 ← phi( scroll_bit::@6/(byte) current_bit#23 ) + (byte) current_bit#15 ← phi( scroll_bit::@6/(byte) current_bit#22 ) (byte) current_bit#7 ← (byte) current_bit#15 (byte*) nxt#5 ← (byte*) nxt#16 (byte*) current_chargen#6 ← (byte*) current_chargen#13 return to:@return @3: scope:[] from @2 - (byte*) CHARGEN#17 ← phi( @2/(byte*) CHARGEN#1 ) + (byte*) CHARGEN#16 ← phi( @2/(byte*) CHARGEN#1 ) (byte*) PROCPORT#20 ← phi( @2/(byte*) PROCPORT#21 ) (byte*) SCROLL#13 ← phi( @2/(byte*) SCROLL#14 ) (byte*) BGCOL#9 ← phi( @2/(byte*) BGCOL#10 ) @@ -1920,7 +1888,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#10 ← phi( @2/(byte*) SCREEN#12 ) + (byte*) SCREEN#8 ← phi( @2/(byte*) SCREEN#11 ) (byte*) TEXT#1 ← phi( @2/(byte*) TEXT#3 ) (byte*) nxt#6 ← (byte*) TEXT#1 to:@6 @@ -1950,8 +1918,8 @@ next_char::@return: scope:[next_char] from next_char::@1 (byte*) nxt#9 ← (byte*) nxt#19 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit - (byte*) SCREEN#3 ← phi( scroll_bit/(byte*) SCREEN#7 ) +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 + (byte*) SCREEN#3 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$0 (byte[]) scroll_hard::line0#0 ← (byte*~) scroll_hard::$1 @@ -2038,17 +2006,17 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 return to:@return @6: scope:[] from @3 - (byte*) TEXT#18 ← phi( @3/(byte*) TEXT#1 ) - (byte*) CHARGEN#16 ← phi( @3/(byte*) CHARGEN#17 ) + (byte*) TEXT#17 ← phi( @3/(byte*) TEXT#1 ) + (byte*) CHARGEN#15 ← phi( @3/(byte*) CHARGEN#16 ) (byte*) PROCPORT#19 ← phi( @3/(byte*) PROCPORT#20 ) (byte*) SCROLL#12 ← phi( @3/(byte*) SCROLL#13 ) (byte*) BGCOL#8 ← phi( @3/(byte*) BGCOL#9 ) (byte*) RASTER#7 ← phi( @3/(byte*) RASTER#9 ) (byte*) current_chargen#21 ← phi( @3/(byte*) current_chargen#26 ) (byte*) nxt#26 ← phi( @3/(byte*) nxt#6 ) - (byte) current_bit#24 ← phi( @3/(byte) current_bit#28 ) + (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#10 ) + (byte*) SCREEN#4 ← phi( @3/(byte*) SCREEN#8 ) call main param-assignment to:@7 @7: scope:[] from @6 @@ -2094,7 +2062,6 @@ INITIAL SSA SYMBOL TABLE (byte*) CHARGEN#14 (byte*) CHARGEN#15 (byte*) CHARGEN#16 -(byte*) CHARGEN#17 (byte*) CHARGEN#2 (byte*) CHARGEN#3 (byte*) CHARGEN#4 @@ -2189,7 +2156,6 @@ INITIAL SSA SYMBOL TABLE (byte*) TEXT#15 (byte*) TEXT#16 (byte*) TEXT#17 -(byte*) TEXT#18 (byte*) TEXT#2 (byte*) TEXT#3 (byte*) TEXT#4 @@ -2373,22 +2339,21 @@ INITIAL SSA SYMBOL TABLE (byte) scroll#8 (byte) scroll#9 (void()) scroll_bit() -(byte~) scroll_bit::$1 -(byte*~) scroll_bit::$10 -(byte~) scroll_bit::$11 -(byte~) scroll_bit::$12 -(boolean~) scroll_bit::$13 -(boolean~) scroll_bit::$14 -(byte*~) scroll_bit::$15 -(boolean~) scroll_bit::$16 +(byte~) scroll_bit::$0 +(boolean~) scroll_bit::$1 +(byte~) scroll_bit::$10 +(boolean~) scroll_bit::$11 +(boolean~) scroll_bit::$12 +(byte~) scroll_bit::$13 +(byte*~) scroll_bit::$14 +(boolean~) scroll_bit::$15 (boolean~) scroll_bit::$2 -(boolean~) scroll_bit::$3 -(byte~) scroll_bit::$4 -(word~) scroll_bit::$5 -(word~) scroll_bit::$6 -(word~) scroll_bit::$7 +(byte~) scroll_bit::$3 +(word~) scroll_bit::$4 +(byte*~) scroll_bit::$5 +(byte*~) scroll_bit::$7 (byte*~) scroll_bit::$8 -(byte*~) scroll_bit::$9 +(byte~) scroll_bit::$9 (label) scroll_bit::@1 (label) scroll_bit::@2 (label) scroll_bit::@3 @@ -2406,9 +2371,6 @@ INITIAL SSA SYMBOL TABLE (byte) scroll_bit::bits#0 (word) scroll_bit::c (word) scroll_bit::c#0 -(word) scroll_bit::c#1 -(word) scroll_bit::c#2 -(word) scroll_bit::c#3 (byte) scroll_bit::r (byte) scroll_bit::r#0 (byte) scroll_bit::r#1 @@ -2494,8 +2456,8 @@ INITIAL SSA SYMBOL TABLE (label) scroll_soft::@return Inversing boolean not (boolean~) scroll_soft::$1 ← (byte) scroll#3 != (byte) 255 from (boolean~) scroll_soft::$0 ← (byte) scroll#3 == (byte) 255 -Inversing boolean not (boolean~) scroll_bit::$3 ← (byte) current_bit#5 != (byte) 0 from (boolean~) scroll_bit::$2 ← (byte) current_bit#5 == (byte) 0 -Inversing boolean not (boolean~) scroll_bit::$14 ← (byte~) scroll_bit::$12 == (byte) 0 from (boolean~) scroll_bit::$13 ← (byte~) scroll_bit::$12 != (byte) 0 +Inversing boolean not (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 from (boolean~) scroll_bit::$1 ← (byte) current_bit#5 == (byte) 0 +Inversing boolean not (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 from (boolean~) scroll_bit::$11 ← (byte~) scroll_bit::$10 != (byte) 0 Inversing boolean not (boolean~) next_char::$1 ← (byte) next_char::c#0 != (byte) '@' from (boolean~) next_char::$0 ← (byte) next_char::c#0 == (byte) '@' Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @@ -2509,13 +2471,13 @@ CONTROL FLOW GRAPH (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@1 main: scope:[main] from @6 - (byte*) TEXT#16 ← phi( @6/(byte*) TEXT#18 ) - (byte*) CHARGEN#14 ← phi( @6/(byte*) CHARGEN#16 ) + (byte*) TEXT#15 ← phi( @6/(byte*) TEXT#17 ) + (byte*) CHARGEN#13 ← phi( @6/(byte*) CHARGEN#15 ) (byte*) PROCPORT#17 ← phi( @6/(byte*) PROCPORT#19 ) (byte*) SCROLL#10 ← phi( @6/(byte*) SCROLL#12 ) (byte*) current_chargen#31 ← phi( @6/(byte*) current_chargen#21 ) - (byte*) nxt#38 ← phi( @6/(byte*) nxt#26 ) - (byte) current_bit#32 ← phi( @6/(byte) current_bit#24 ) + (byte*) nxt#37 ← phi( @6/(byte*) nxt#26 ) + (byte) current_bit#32 ← phi( @6/(byte) current_bit#23 ) (byte) scroll#22 ← phi( @6/(byte) scroll#15 ) (byte*) BGCOL#7 ← phi( @6/(byte*) BGCOL#8 ) (byte*) RASTER#5 ← phi( @6/(byte*) RASTER#7 ) @@ -2525,39 +2487,39 @@ main: scope:[main] from @6 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main - (byte*) TEXT#15 ← phi( main/(byte*) TEXT#16 ) - (byte*) CHARGEN#13 ← phi( main/(byte*) CHARGEN#14 ) - (byte*) PROCPORT#16 ← phi( main/(byte*) PROCPORT#17 ) + (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*) 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 ) - (byte*) nxt#36 ← phi( main/(byte*) nxt#38 ) + (byte*) nxt#35 ← phi( main/(byte*) nxt#37 ) (byte) current_bit#31 ← phi( main/(byte) current_bit#32 ) (byte) scroll#21 ← phi( main/(byte) scroll#22 ) (byte*) BGCOL#6 ← phi( main/(byte*) BGCOL#7 ) (byte*) RASTER#4 ← phi( main/(byte*) RASTER#5 ) to:main::@2 main::@1: scope:[main] from main::@8 - (byte*) TEXT#14 ← phi( main::@8/(byte*) TEXT#17 ) - (byte*) CHARGEN#12 ← phi( main::@8/(byte*) CHARGEN#15 ) - (byte*) PROCPORT#15 ← phi( main::@8/(byte*) PROCPORT#18 ) + (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*) 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 ) - (byte*) nxt#35 ← phi( main::@8/(byte*) nxt#0 ) + (byte*) nxt#34 ← phi( main::@8/(byte*) nxt#0 ) (byte) current_bit#30 ← phi( main::@8/(byte) current_bit#0 ) (byte) scroll#20 ← phi( main::@8/(byte) scroll#0 ) (byte*) BGCOL#5 ← phi( main::@8/(byte*) BGCOL#2 ) (byte*) RASTER#3 ← phi( main::@8/(byte*) RASTER#6 ) to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#14 main::@2/(byte*) TEXT#13 main::@7/(byte*) TEXT#15 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#12 main::@2/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#13 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#15 main::@2/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#16 ) + (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*) 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 ) - (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#35 main::@2/(byte*) nxt#31 main::@7/(byte*) nxt#36 ) + (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#34 main::@2/(byte*) nxt#31 main::@7/(byte*) nxt#35 ) (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#30 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#31 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#20 main::@2/(byte) scroll#18 main::@7/(byte) scroll#21 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#5 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#6 ) @@ -2566,14 +2528,14 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (byte*) TEXT#12 ← phi( main::@2/(byte*) TEXT#13 main::@3/(byte*) TEXT#12 ) - (byte*) CHARGEN#10 ← phi( main::@2/(byte*) CHARGEN#11 main::@3/(byte*) CHARGEN#10 ) - (byte*) PROCPORT#13 ← phi( main::@2/(byte*) PROCPORT#14 main::@3/(byte*) PROCPORT#13 ) + (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*) 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 ) (byte*) nxt#27 ← phi( main::@2/(byte*) nxt#31 main::@3/(byte*) nxt#27 ) - (byte) current_bit#25 ← phi( main::@2/(byte) current_bit#29 main::@3/(byte) current_bit#25 ) + (byte) current_bit#24 ← phi( main::@2/(byte) current_bit#29 main::@3/(byte) current_bit#24 ) (byte) scroll#16 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#16 ) (byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#3 ) (byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 ) @@ -2581,25 +2543,25 @@ main::@3: scope:[main] from main::@2 main::@3 if((boolean~) main::$2) goto main::@3 to:main::@5 main::@5: scope:[main] from main::@3 - (byte*) TEXT#11 ← phi( main::@3/(byte*) TEXT#12 ) - (byte*) CHARGEN#9 ← phi( main::@3/(byte*) CHARGEN#10 ) + (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*) PROCPORT#12 ← phi( main::@3/(byte*) PROCPORT#13 ) - (byte*) SCREEN#13 ← phi( main::@3/(byte*) SCREEN#15 ) (byte*) RASTER#8 ← phi( main::@3/(byte*) RASTER#2 ) (byte*) SCROLL#4 ← phi( main::@3/(byte*) SCROLL#6 ) (byte*) current_chargen#15 ← phi( main::@3/(byte*) current_chargen#22 ) (byte*) nxt#21 ← phi( main::@3/(byte*) nxt#27 ) - (byte) current_bit#17 ← phi( main::@3/(byte) current_bit#25 ) + (byte) current_bit#17 ← phi( main::@3/(byte) current_bit#24 ) (byte) scroll#13 ← phi( main::@3/(byte) scroll#16 ) (byte*) BGCOL#1 ← phi( main::@3/(byte*) BGCOL#3 ) *((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1) call scroll_soft param-assignment to:main::@8 main::@8: scope:[main] from main::@5 - (byte*) TEXT#17 ← phi( main::@5/(byte*) TEXT#11 ) - (byte*) CHARGEN#15 ← phi( main::@5/(byte*) CHARGEN#9 ) + (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*) PROCPORT#18 ← phi( main::@5/(byte*) PROCPORT#12 ) - (byte*) SCREEN#19 ← phi( main::@5/(byte*) SCREEN#13 ) (byte*) SCROLL#11 ← phi( main::@5/(byte*) SCROLL#4 ) (byte*) RASTER#6 ← phi( main::@5/(byte*) RASTER#8 ) (byte*) BGCOL#2 ← phi( main::@5/(byte*) BGCOL#1 ) @@ -2630,19 +2592,19 @@ 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#14 ← phi( @begin/(byte*) SCREEN#0 ) + (byte*) SCREEN#13 ← 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) 7 to:@2 scroll_soft: scope:[scroll_soft] from main::@5 - (byte*) TEXT#10 ← phi( main::@5/(byte*) TEXT#11 ) - (byte*) CHARGEN#8 ← phi( main::@5/(byte*) CHARGEN#9 ) + (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*) PROCPORT#11 ← phi( main::@5/(byte*) PROCPORT#12 ) - (byte*) SCREEN#11 ← phi( main::@5/(byte*) SCREEN#13 ) (byte*) current_chargen#23 ← phi( main::@5/(byte*) current_chargen#15 ) (byte*) nxt#28 ← phi( main::@5/(byte*) nxt#21 ) - (byte) current_bit#26 ← phi( main::@5/(byte) current_bit#17 ) + (byte) current_bit#25 ← phi( main::@5/(byte) current_bit#17 ) (byte*) SCROLL#2 ← phi( main::@5/(byte*) SCROLL#4 ) (byte) scroll#9 ← phi( main::@5/(byte) scroll#13 ) (byte) scroll#3 ← -- (byte) scroll#9 @@ -2652,20 +2614,20 @@ scroll_soft: scope:[scroll_soft] from main::@5 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 (byte*) current_chargen#17 ← phi( scroll_soft/(byte*) current_chargen#23 scroll_soft::@3/(byte*) current_chargen#2 ) (byte*) nxt#23 ← phi( scroll_soft/(byte*) nxt#28 scroll_soft::@3/(byte*) nxt#2 ) - (byte) current_bit#19 ← phi( scroll_soft/(byte) current_bit#26 scroll_soft::@3/(byte) current_bit#2 ) + (byte) current_bit#19 ← phi( scroll_soft/(byte) current_bit#25 scroll_soft::@3/(byte) current_bit#2 ) (byte*) SCROLL#1 ← phi( scroll_soft/(byte*) SCROLL#2 scroll_soft::@3/(byte*) SCROLL#3 ) (byte) scroll#10 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(byte) scroll#14 ) *((byte*) SCROLL#1) ← (byte) scroll#10 to:scroll_soft::@return scroll_soft::@2: scope:[scroll_soft] from scroll_soft - (byte*) TEXT#9 ← phi( scroll_soft/(byte*) TEXT#10 ) - (byte*) CHARGEN#7 ← phi( scroll_soft/(byte*) CHARGEN#8 ) - (byte*) PROCPORT#10 ← phi( scroll_soft/(byte*) PROCPORT#11 ) - (byte*) SCREEN#8 ← phi( scroll_soft/(byte*) SCREEN#11 ) + (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*) 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 ) (byte*) nxt#22 ← phi( scroll_soft/(byte*) nxt#28 ) - (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#26 ) + (byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#25 ) (byte) scroll#4 ← (byte) 7 call scroll_bit param-assignment to:scroll_soft::@3 @@ -2696,133 +2658,127 @@ 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#12 ← phi( @1/(byte*) SCREEN#14 ) + (byte*) SCREEN#11 ← phi( @1/(byte*) SCREEN#13 ) (byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 ) (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 ) (byte*) current_chargen#4 ← (byte*) CHARGEN#1 (byte) current_bit#4 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - (byte*) TEXT#8 ← phi( scroll_soft::@2/(byte*) TEXT#9 ) - (byte*) CHARGEN#6 ← phi( scroll_soft::@2/(byte*) CHARGEN#7 ) - (byte*) nxt#32 ← phi( scroll_soft::@2/(byte*) nxt#22 ) + (byte*) TEXT#7 ← phi( scroll_soft::@2/(byte*) TEXT#8 ) (byte*) current_chargen#28 ← phi( scroll_soft::@2/(byte*) current_chargen#16 ) - (byte*) PROCPORT#6 ← phi( scroll_soft::@2/(byte*) PROCPORT#10 ) - (byte*) SCREEN#7 ← phi( scroll_soft::@2/(byte*) SCREEN#8 ) - (byte) current_bit#20 ← phi( scroll_soft::@2/(byte) current_bit#18 ) + (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*) 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) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +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*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#5 scroll_bit::@8/(byte*) PROCPORT#6 ) call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte*) TEXT#7 ← phi( scroll_bit/(byte*) TEXT#8 ) - (byte*) CHARGEN#5 ← phi( scroll_bit/(byte*) CHARGEN#6 ) - (byte*) nxt#29 ← phi( scroll_bit/(byte*) nxt#32 ) - (byte*) current_chargen#24 ← phi( scroll_bit/(byte*) current_chargen#28 ) - (byte*) SCREEN#5 ← phi( scroll_bit/(byte*) SCREEN#7 ) - (byte*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#6 ) - (byte) current_bit#13 ← phi( scroll_bit/(byte) current_bit#20 ) - (byte~) scroll_bit::$1 ← (byte) current_bit#13 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$3 ← (byte) current_bit#5 != (byte) 0 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#29 scroll_bit::@8/(byte*) nxt#4 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#24 scroll_bit::@8/(byte*) current_chargen#5 ) - (byte*) SCREEN#2 ← phi( scroll_bit::@7/(byte*) SCREEN#5 scroll_bit::@8/(byte*) SCREEN#6 ) - (byte*) PROCPORT#1 ← phi( scroll_bit::@7/(byte*) PROCPORT#3 scroll_bit::@8/(byte*) PROCPORT#4 ) +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 + (byte*) nxt#36 ← phi( scroll_bit::@1/(byte*) nxt#38 ) + (byte) current_bit#21 ← phi( scroll_bit::@1/(byte) current_bit#26 ) + (byte*) current_chargen#19 ← phi( scroll_bit::@1/(byte*) current_chargen#24 ) + (byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) + (byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 ) asm { sei } *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#2 + (byte) 40 - (byte*~) scroll_bit::$10 ← (byte*~) scroll_bit::$9 + (byte) 39 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$10 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 + (byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte) 39 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$8 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 - (byte*) TEXT#6 ← phi( scroll_bit::@7/(byte*) TEXT#7 ) - (byte*) SCREEN#9 ← phi( scroll_bit::@7/(byte*) SCREEN#5 ) - (byte*) PROCPORT#7 ← phi( scroll_bit::@7/(byte*) PROCPORT#3 ) - (byte*) CHARGEN#4 ← phi( scroll_bit::@7/(byte*) CHARGEN#5 ) - (byte*) nxt#24 ← phi( scroll_bit::@7/(byte*) nxt#29 ) +scroll_bit::@4: scope:[scroll_bit] from scroll_bit + (byte*) SCREEN#10 ← phi( scroll_bit/(byte*) SCREEN#6 ) + (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 ) + (byte*) nxt#24 ← phi( scroll_bit/(byte*) nxt#29 ) call next_char param-assignment (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#6 ← phi( scroll_bit::@4/(byte*) SCREEN#9 ) - (byte*) PROCPORT#4 ← phi( scroll_bit::@4/(byte*) PROCPORT#7 ) + (byte*) SCREEN#7 ← phi( scroll_bit::@4/(byte*) SCREEN#10 ) + (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 ) (byte) next_char::return#3 ← phi( scroll_bit::@4/(byte) next_char::return#0 ) - (byte~) scroll_bit::$4 ← (byte) next_char::return#3 + (byte~) scroll_bit::$3 ← (byte) next_char::return#3 (byte*) nxt#4 ← (byte*) nxt#15 - (word) scroll_bit::c#0 ← (byte~) scroll_bit::$4 - (word~) scroll_bit::$5 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#1 ← (word~) scroll_bit::$5 - (word~) scroll_bit::$6 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#2 ← (word~) scroll_bit::$6 - (word~) scroll_bit::$7 ← (word) scroll_bit::c#2 << (byte) 1 - (word) scroll_bit::c#3 ← (word~) scroll_bit::$7 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#2 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word) scroll_bit::c#0 ← (byte~) scroll_bit::$3 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#2 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) nxt#33 ← phi( scroll_bit::@1/(byte*) nxt#37 scroll_bit::@3/(byte*) nxt#30 ) - (byte*) PROCPORT#8 ← phi( scroll_bit::@1/(byte*) PROCPORT#1 scroll_bit::@3/(byte*) PROCPORT#5 ) - (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) current_bit#14 ← phi( scroll_bit::@1/(byte) current_bit#21 scroll_bit::@3/(byte) current_bit#22 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte*) current_chargen#12 ← phi( scroll_bit::@1/(byte*) current_chargen#18 scroll_bit::@3/(byte*) current_chargen#19 ) - (byte~) scroll_bit::$11 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 - (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$11 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#30 scroll_bit::@7/(byte*) nxt#36 ) + (byte*) PROCPORT#7 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 scroll_bit::@7/(byte*) PROCPORT#1 ) + (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) current_bit#14 ← phi( scroll_bit::@3/(byte) current_bit#20 scroll_bit::@7/(byte) current_bit#21 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte*) current_chargen#12 ← phi( scroll_bit::@3/(byte*) current_chargen#18 scroll_bit::@7/(byte*) current_chargen#19 ) + (byte~) scroll_bit::$9 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 + (byte) scroll_bit::bits#0 ← (byte~) scroll_bit::$9 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$14 ← (byte~) scroll_bit::$12 == (byte) 0 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte*) nxt#30 ← phi( scroll_bit::@2/(byte*) nxt#33 scroll_bit::@5/(byte*) nxt#34 ) - (byte*) PROCPORT#5 ← phi( scroll_bit::@2/(byte*) PROCPORT#8 scroll_bit::@5/(byte*) PROCPORT#9 ) - (byte) current_bit#22 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#27 ) - (byte*) current_chargen#19 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#25 ) + (byte*) nxt#30 ← phi( scroll_bit::@2/(byte*) nxt#32 scroll_bit::@5/(byte*) nxt#33 ) + (byte*) PROCPORT#4 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 scroll_bit::@5/(byte*) PROCPORT#8 ) + (byte) current_bit#20 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#27 ) + (byte*) current_chargen#18 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#25 ) (byte) scroll_bit::r#3 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 scroll_bit::@5/(byte) scroll_bit::r#4 ) (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 scroll_bit::@5/(byte*) scroll_bit::sc#4 ) (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 - (byte*~) scroll_bit::$15 ← (byte*) scroll_bit::sc#2 + (byte) 40 - (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$15 + (byte*~) scroll_bit::$14 ← (byte*) scroll_bit::sc#2 + (byte) 40 + (byte*) scroll_bit::sc#1 ← (byte*~) scroll_bit::$14 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r#1 != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte*) nxt#34 ← phi( scroll_bit::@2/(byte*) nxt#33 ) - (byte*) PROCPORT#9 ← phi( scroll_bit::@2/(byte*) PROCPORT#8 ) + (byte*) nxt#33 ← phi( scroll_bit::@2/(byte*) nxt#32 ) + (byte*) PROCPORT#8 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 ) (byte) current_bit#27 ← phi( scroll_bit::@2/(byte) current_bit#14 ) (byte*) current_chargen#25 ← phi( scroll_bit::@2/(byte*) current_chargen#12 ) (byte) scroll_bit::r#4 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 ) (byte*) scroll_bit::sc#4 ← phi( scroll_bit::@2/(byte*) scroll_bit::sc#3 ) - (byte) scroll_bit::b#1 ← (byte) '*' + (byte~) scroll_bit::$13 ← (byte) 128 + (byte) ' ' + (byte) scroll_bit::b#1 ← (byte~) scroll_bit::$13 to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#19 ) + (byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#18 ) (byte*) nxt#25 ← phi( scroll_bit::@3/(byte*) nxt#30 ) - (byte) current_bit#23 ← phi( scroll_bit::@3/(byte) current_bit#22 ) - (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#5 ) + (byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 ) + (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 ) *((byte*) PROCPORT#2) ← (byte) 55 asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 (byte*) current_chargen#13 ← phi( scroll_bit::@6/(byte*) current_chargen#20 ) (byte*) nxt#16 ← phi( scroll_bit::@6/(byte*) nxt#25 ) - (byte) current_bit#15 ← phi( scroll_bit::@6/(byte) current_bit#23 ) + (byte) current_bit#15 ← phi( scroll_bit::@6/(byte) current_bit#22 ) (byte) current_bit#7 ← (byte) current_bit#15 (byte*) nxt#5 ← (byte*) nxt#16 (byte*) current_chargen#6 ← (byte*) current_chargen#13 return to:@return @3: scope:[] from @2 - (byte*) CHARGEN#17 ← phi( @2/(byte*) CHARGEN#1 ) + (byte*) CHARGEN#16 ← phi( @2/(byte*) CHARGEN#1 ) (byte*) PROCPORT#20 ← phi( @2/(byte*) PROCPORT#21 ) (byte*) SCROLL#13 ← phi( @2/(byte*) SCROLL#14 ) (byte*) BGCOL#9 ← phi( @2/(byte*) BGCOL#10 ) @@ -2830,7 +2786,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#10 ← phi( @2/(byte*) SCREEN#12 ) + (byte*) SCREEN#8 ← phi( @2/(byte*) SCREEN#11 ) (byte*) TEXT#1 ← phi( @2/(byte*) TEXT#3 ) (byte*) nxt#6 ← (byte*) TEXT#1 to:@6 @@ -2859,8 +2815,8 @@ next_char::@return: scope:[next_char] from next_char::@1 (byte*) nxt#9 ← (byte*) nxt#19 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit - (byte*) SCREEN#3 ← phi( scroll_bit/(byte*) SCREEN#7 ) +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 + (byte*) SCREEN#3 ← phi( scroll_bit::@1/(byte*) SCREEN#5 ) (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 (byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte~) scroll_hard::$0 (byte[]) scroll_hard::line0#0 ← (byte*~) scroll_hard::$1 @@ -2947,17 +2903,17 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 return to:@return @6: scope:[] from @3 - (byte*) TEXT#18 ← phi( @3/(byte*) TEXT#1 ) - (byte*) CHARGEN#16 ← phi( @3/(byte*) CHARGEN#17 ) + (byte*) TEXT#17 ← phi( @3/(byte*) TEXT#1 ) + (byte*) CHARGEN#15 ← phi( @3/(byte*) CHARGEN#16 ) (byte*) PROCPORT#19 ← phi( @3/(byte*) PROCPORT#20 ) (byte*) SCROLL#12 ← phi( @3/(byte*) SCROLL#13 ) (byte*) BGCOL#8 ← phi( @3/(byte*) BGCOL#9 ) (byte*) RASTER#7 ← phi( @3/(byte*) RASTER#9 ) (byte*) current_chargen#21 ← phi( @3/(byte*) current_chargen#26 ) (byte*) nxt#26 ← phi( @3/(byte*) nxt#6 ) - (byte) current_bit#24 ← phi( @3/(byte) current_bit#28 ) + (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#10 ) + (byte*) SCREEN#4 ← phi( @3/(byte*) SCREEN#8 ) call main param-assignment to:@7 @7: scope:[] from @6 @@ -2973,60 +2929,63 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @end: scope:[] from @7 Not aliassing across scopes: fillscreen::screen#0 SCREEN#1 -Not aliassing across scopes: current_bit#5 scroll_bit::$1 -Not aliassing across scopes: scroll_bit::$4 next_char::return#3 -Not aliassing across scopes: current_chargen#5 scroll_bit::$8 -Alias candidate removed (byte*) CHARGEN#16 -Alias candidate removed (byte*) CHARGEN#14 +Not aliassing across scopes: current_bit#5 scroll_bit::$0 +Not aliassing across scopes: scroll_bit::$3 next_char::return#3 +Not aliassing across scopes: current_chargen#5 scroll_bit::$5 +Alias candidate removed (byte*) CHARGEN#15 +Alias candidate removed (byte*) CHARGEN#13 Alias candidate removed (byte*) CHARGEN#1 -Alias candidate removed (byte*) CHARGEN#17 -Alias candidate removed (byte*) TEXT#18 -Alias candidate removed (byte*) TEXT#16 +Alias candidate removed (byte*) CHARGEN#16 +Alias candidate removed (byte*) TEXT#17 +Alias candidate removed (byte*) TEXT#15 Alias candidate removed (byte*) TEXT#1 -Alias (byte*) SCREEN#0 = (byte*) SCREEN#1 (byte*) SCREEN#4 (byte*) SCREEN#18 (byte*) SCREEN#14 (byte*) SCREEN#12 (byte*) SCREEN#10 +Alias (byte*) SCREEN#0 = (byte*) SCREEN#1 (byte*) SCREEN#4 (byte*) SCREEN#18 (byte*) SCREEN#13 (byte*) SCREEN#11 (byte*) SCREEN#8 Alias (byte*) RASTER#0 = (byte*) RASTER#5 (byte*) RASTER#7 (byte*) RASTER#4 (byte*) RASTER#11 (byte*) RASTER#10 (byte*) RASTER#9 Alias (byte*) BGCOL#0 = (byte*) BGCOL#7 (byte*) BGCOL#8 (byte*) BGCOL#6 (byte*) BGCOL#11 (byte*) BGCOL#10 (byte*) BGCOL#9 Alias (byte) scroll#15 = (byte) scroll#22 (byte) scroll#21 (byte) scroll#19 (byte) scroll#2 (byte) scroll#17 -Alias (byte) current_bit#24 = (byte) current_bit#32 (byte) current_bit#31 (byte) current_bit#28 (byte) current_bit#4 +Alias (byte) current_bit#23 = (byte) current_bit#32 (byte) current_bit#31 (byte) current_bit#28 (byte) current_bit#4 Alias (byte*) SCROLL#0 = (byte*) SCROLL#10 (byte*) SCROLL#12 (byte*) SCROLL#9 (byte*) SCROLL#15 (byte*) SCROLL#14 (byte*) SCROLL#13 Alias (byte*) PROCPORT#0 = (byte*) PROCPORT#17 (byte*) PROCPORT#19 (byte*) PROCPORT#16 (byte*) PROCPORT#22 (byte*) PROCPORT#21 (byte*) PROCPORT#20 -Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#13 (byte*) current_chargen#31 (byte*) current_chargen#21 (byte*) current_chargen#30 (byte*) CHARGEN#3 (byte*) current_chargen#4 (byte*) current_chargen#26 -Alias (byte*) TEXT#0 = (byte*) TEXT#15 (byte*) nxt#38 (byte*) nxt#26 (byte*) nxt#36 (byte*) TEXT#5 (byte*) TEXT#3 (byte*) nxt#6 +Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#12 (byte*) current_chargen#31 (byte*) current_chargen#21 (byte*) current_chargen#30 (byte*) CHARGEN#3 (byte*) current_chargen#4 (byte*) current_chargen#26 +Alias (byte*) TEXT#0 = (byte*) TEXT#14 (byte*) nxt#37 (byte*) nxt#26 (byte*) nxt#35 (byte*) TEXT#5 (byte*) TEXT#3 (byte*) nxt#6 Alias (byte*) RASTER#2 = (byte*) RASTER#3 (byte*) RASTER#6 (byte*) RASTER#8 Alias (byte*) BGCOL#1 = (byte*) BGCOL#5 (byte*) BGCOL#2 (byte*) BGCOL#3 Alias (byte) scroll#0 = (byte) scroll#20 (byte) scroll#7 (byte) scroll#5 (byte) scroll#8 (byte) scroll#1 (byte) scroll#11 (byte) scroll#10 (byte) scroll#12 (byte) scroll#6 Alias (byte) current_bit#0 = (byte) current_bit#30 (byte) current_bit#9 (byte) current_bit#3 (byte) current_bit#10 (byte) current_bit#1 (byte) current_bit#12 (byte) current_bit#19 (byte) current_bit#16 (byte) current_bit#8 -Alias (byte*) nxt#0 = (byte*) nxt#35 (byte*) nxt#11 (byte*) nxt#3 (byte*) nxt#12 (byte*) nxt#1 (byte*) nxt#14 (byte*) nxt#23 (byte*) nxt#20 (byte*) nxt#10 +Alias (byte*) nxt#0 = (byte*) nxt#34 (byte*) nxt#11 (byte*) nxt#3 (byte*) nxt#12 (byte*) nxt#1 (byte*) nxt#14 (byte*) nxt#23 (byte*) nxt#20 (byte*) nxt#10 Alias (byte*) current_chargen#0 = (byte*) current_chargen#29 (byte*) current_chargen#8 (byte*) current_chargen#3 (byte*) current_chargen#9 (byte*) current_chargen#1 (byte*) current_chargen#11 (byte*) current_chargen#17 (byte*) current_chargen#14 (byte*) current_chargen#7 Alias (byte*) SCROLL#11 = (byte*) SCROLL#8 (byte*) SCROLL#4 (byte*) SCROLL#6 (byte*) SCROLL#2 (byte*) SCROLL#5 (byte*) SCROLL#3 -Alias (byte*) SCREEN#11 = (byte*) SCREEN#17 (byte*) SCREEN#19 (byte*) SCREEN#13 (byte*) SCREEN#15 (byte*) SCREEN#8 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#9 (byte*) SCREEN#6 (byte*) SCREEN#3 -Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#15 (byte*) PROCPORT#18 (byte*) PROCPORT#12 (byte*) PROCPORT#13 (byte*) PROCPORT#11 (byte*) PROCPORT#6 (byte*) PROCPORT#3 (byte*) PROCPORT#7 (byte*) PROCPORT#4 -Alias (byte*) CHARGEN#10 = (byte*) CHARGEN#12 (byte*) CHARGEN#15 (byte*) CHARGEN#9 (byte*) CHARGEN#8 (byte*) CHARGEN#7 (byte*) CHARGEN#6 (byte*) CHARGEN#5 (byte*) CHARGEN#4 (byte*) CHARGEN#2 -Alias (byte*) TEXT#10 = (byte*) TEXT#14 (byte*) TEXT#17 (byte*) TEXT#11 (byte*) TEXT#12 (byte*) TEXT#9 (byte*) TEXT#8 (byte*) TEXT#7 (byte*) TEXT#6 (byte*) TEXT#4 (byte*) TEXT#2 (byte*) nxt#8 +Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#15 (byte*) PROCPORT#18 (byte*) PROCPORT#12 (byte*) PROCPORT#13 (byte*) PROCPORT#11 (byte*) PROCPORT#9 (byte*) PROCPORT#5 (byte*) PROCPORT#6 +Alias (byte*) SCREEN#10 = (byte*) SCREEN#17 (byte*) SCREEN#19 (byte*) SCREEN#14 (byte*) SCREEN#15 (byte*) SCREEN#12 (byte*) SCREEN#9 (byte*) SCREEN#6 (byte*) SCREEN#7 +Alias (byte*) CHARGEN#11 = (byte*) CHARGEN#14 (byte*) CHARGEN#8 (byte*) CHARGEN#9 (byte*) CHARGEN#7 (byte*) CHARGEN#6 (byte*) CHARGEN#5 (byte*) CHARGEN#4 (byte*) CHARGEN#2 +Alias (byte*) TEXT#10 = (byte*) TEXT#13 (byte*) TEXT#16 (byte*) TEXT#11 (byte*) TEXT#9 (byte*) TEXT#8 (byte*) TEXT#7 (byte*) TEXT#6 (byte*) TEXT#4 (byte*) TEXT#2 (byte*) nxt#8 Alias (byte) scroll#13 = (byte) scroll#16 (byte) scroll#9 -Alias (byte) current_bit#13 = (byte) current_bit#17 (byte) current_bit#25 (byte) current_bit#26 (byte) current_bit#18 (byte) current_bit#20 -Alias (byte*) nxt#17 = (byte*) nxt#21 (byte*) nxt#27 (byte*) nxt#28 (byte*) nxt#22 (byte*) nxt#32 (byte*) nxt#29 (byte*) nxt#24 -Alias (byte*) current_chargen#15 = (byte*) current_chargen#22 (byte*) current_chargen#23 (byte*) current_chargen#16 (byte*) current_chargen#28 (byte*) current_chargen#24 -Alias (byte) current_bit#11 = (byte) current_bit#7 (byte) current_bit#2 (byte) current_bit#23 (byte) current_bit#22 (byte) current_bit#15 +Alias (byte) current_bit#13 = (byte) current_bit#17 (byte) current_bit#24 (byte) current_bit#25 (byte) current_bit#18 +Alias (byte*) nxt#17 = (byte*) nxt#21 (byte*) nxt#27 (byte*) nxt#28 (byte*) nxt#22 (byte*) nxt#29 (byte*) nxt#24 +Alias (byte*) current_chargen#15 = (byte*) current_chargen#22 (byte*) current_chargen#23 (byte*) current_chargen#16 (byte*) current_chargen#28 +Alias (byte) current_bit#11 = (byte) current_bit#7 (byte) current_bit#2 (byte) current_bit#22 (byte) current_bit#20 (byte) current_bit#15 Alias (byte*) nxt#13 = (byte*) nxt#5 (byte*) nxt#2 (byte*) nxt#25 (byte*) nxt#30 (byte*) nxt#16 -Alias (byte*) current_chargen#10 = (byte*) current_chargen#6 (byte*) current_chargen#2 (byte*) current_chargen#20 (byte*) current_chargen#19 (byte*) current_chargen#13 +Alias (byte*) current_chargen#10 = (byte*) current_chargen#6 (byte*) current_chargen#2 (byte*) current_chargen#20 (byte*) current_chargen#18 (byte*) current_chargen#13 Alias (byte) scroll#14 = (byte) scroll#4 -Alias (byte*) scroll_bit::sc#0 = (byte*~) scroll_bit::$10 +Alias (byte*) PROCPORT#1 = (byte*) PROCPORT#3 +Alias (byte*) SCREEN#2 = (byte*) SCREEN#5 (byte*) SCREEN#3 +Alias (byte*) current_chargen#19 = (byte*) current_chargen#24 +Alias (byte) current_bit#21 = (byte) current_bit#26 +Alias (byte*) nxt#36 = (byte*) nxt#38 +Alias (byte*) scroll_bit::sc#0 = (byte*~) scroll_bit::$8 Alias (byte) next_char::c#2 = (byte) next_char::return#0 (byte) next_char::return#2 (byte) next_char::return#3 (byte) next_char::return#1 (byte) next_char::return#4 Alias (byte*) nxt#15 = (byte*) nxt#9 (byte*) nxt#4 (byte*) nxt#19 (byte*) nxt#7 -Alias (word) scroll_bit::c#0 = (byte~) scroll_bit::$4 -Alias (word) scroll_bit::c#1 = (word~) scroll_bit::$5 -Alias (word) scroll_bit::c#2 = (word~) scroll_bit::$6 -Alias (word) scroll_bit::c#3 = (word~) scroll_bit::$7 -Alias (byte) scroll_bit::bits#0 = (byte~) scroll_bit::$11 -Alias (byte*) scroll_bit::sc#1 = (byte*~) scroll_bit::$15 +Alias (word) scroll_bit::c#0 = (byte~) scroll_bit::$3 +Alias (byte) scroll_bit::bits#0 = (byte~) scroll_bit::$9 +Alias (byte*) scroll_bit::sc#1 = (byte*~) scroll_bit::$14 Alias (byte*) scroll_bit::sc#3 = (byte*) scroll_bit::sc#4 Alias (byte) scroll_bit::r#2 = (byte) scroll_bit::r#4 Alias (byte*) current_chargen#12 = (byte*) current_chargen#25 Alias (byte) current_bit#14 = (byte) current_bit#27 -Alias (byte*) PROCPORT#8 = (byte*) PROCPORT#9 -Alias (byte*) nxt#33 = (byte*) nxt#34 -Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#5 +Alias (byte*) PROCPORT#7 = (byte*) PROCPORT#8 +Alias (byte*) nxt#32 = (byte*) nxt#33 +Alias (byte) scroll_bit::b#1 = (byte~) scroll_bit::$13 +Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#4 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 @@ -3049,27 +3008,27 @@ CONTROL FLOW GRAPH (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" to:@1 main: scope:[main] from @6 - (byte*) TEXT#16 ← phi( @6/(byte*) TEXT#18 ) - (byte*) CHARGEN#14 ← phi( @6/(byte*) CHARGEN#16 ) + (byte*) TEXT#15 ← phi( @6/(byte*) TEXT#17 ) + (byte*) CHARGEN#13 ← phi( @6/(byte*) CHARGEN#15 ) (byte*) fillscreen::cursor#0 ← (byte*) SCREEN#0 (byte) fillscreen::fill#0 ← (byte) 32 call fillscreen param-assignment to:main::@7 main::@7: scope:[main] from main - (byte*) TEXT#0 ← phi( main/(byte*) TEXT#16 ) - (byte*) CHARGEN#0 ← phi( main/(byte*) CHARGEN#14 ) + (byte*) TEXT#0 ← phi( main/(byte*) TEXT#15 ) + (byte*) CHARGEN#0 ← phi( main/(byte*) CHARGEN#13 ) to:main::@2 main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#10 main::@2/(byte*) TEXT#13 main::@7/(byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 main::@2/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#10 main::@2/(byte*) TEXT#12 main::@7/(byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#11 main::@2/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#0 ) + (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#10 main::@2/(byte*) SCREEN#16 main::@7/(byte*) SCREEN#0 ) (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#10 main::@2/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#0 ) - (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#11 main::@2/(byte*) SCREEN#16 main::@7/(byte*) SCREEN#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#11 main::@2/(byte*) SCROLL#7 main::@7/(byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@2/(byte*) current_chargen#27 main::@7/(byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@2/(byte*) nxt#31 main::@7/(byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@2/(byte) scroll#18 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#1 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) @@ -3077,10 +3036,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (byte*) TEXT#10 ← phi( main::@2/(byte*) TEXT#13 main::@3/(byte*) TEXT#10 ) - (byte*) CHARGEN#10 ← phi( main::@2/(byte*) CHARGEN#11 main::@3/(byte*) CHARGEN#10 ) + (byte*) TEXT#10 ← phi( main::@2/(byte*) TEXT#12 main::@3/(byte*) TEXT#10 ) + (byte*) CHARGEN#11 ← phi( main::@2/(byte*) CHARGEN#10 main::@3/(byte*) CHARGEN#11 ) + (byte*) SCREEN#10 ← phi( main::@2/(byte*) SCREEN#16 main::@3/(byte*) SCREEN#10 ) (byte*) PROCPORT#10 ← phi( main::@2/(byte*) PROCPORT#14 main::@3/(byte*) PROCPORT#10 ) - (byte*) SCREEN#11 ← phi( main::@2/(byte*) SCREEN#16 main::@3/(byte*) SCREEN#11 ) (byte*) SCROLL#11 ← phi( main::@2/(byte*) SCROLL#7 main::@3/(byte*) SCROLL#11 ) (byte*) current_chargen#15 ← phi( main::@2/(byte*) current_chargen#27 main::@3/(byte*) current_chargen#15 ) (byte*) nxt#17 ← phi( main::@2/(byte*) nxt#31 main::@3/(byte*) nxt#17 ) @@ -3130,57 +3089,55 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 (byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#0 ) (byte*) CHARGEN#0 ← (byte*) CHARGEN#1 - (byte) current_bit#24 ← (byte) 1 + (byte) current_bit#23 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#17 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#15 scroll_bit::@8/(byte*) current_chargen#5 ) + (byte*) SCREEN#2 ← phi( scroll_bit/(byte*) SCREEN#10 scroll_bit::@8/(byte*) SCREEN#10 ) + (byte*) PROCPORT#1 ← phi( scroll_bit/(byte*) PROCPORT#10 scroll_bit::@8/(byte*) PROCPORT#10 ) call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#13 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$3 ← (byte) current_bit#5 != (byte) 0 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#17 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#15 scroll_bit::@8/(byte*) current_chargen#5 ) - (byte*) SCREEN#2 ← phi( scroll_bit::@7/(byte*) SCREEN#11 scroll_bit::@8/(byte*) SCREEN#11 ) - (byte*) PROCPORT#1 ← phi( scroll_bit::@7/(byte*) PROCPORT#10 scroll_bit::@8/(byte*) PROCPORT#10 ) +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#2 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#10 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#11 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) nxt#33 ← phi( scroll_bit::@1/(byte*) nxt#37 scroll_bit::@3/(byte*) nxt#13 ) - (byte*) PROCPORT#8 ← phi( scroll_bit::@1/(byte*) PROCPORT#1 scroll_bit::@3/(byte*) PROCPORT#2 ) - (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) current_bit#14 ← phi( scroll_bit::@1/(byte) current_bit#21 scroll_bit::@3/(byte) current_bit#11 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte*) current_chargen#12 ← phi( scroll_bit::@1/(byte*) current_chargen#18 scroll_bit::@3/(byte*) current_chargen#10 ) +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#13 scroll_bit::@7/(byte*) nxt#36 ) + (byte*) PROCPORT#7 ← phi( scroll_bit::@3/(byte*) PROCPORT#2 scroll_bit::@7/(byte*) PROCPORT#1 ) + (byte*) scroll_bit::sc#3 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) current_bit#14 ← phi( scroll_bit::@3/(byte) current_bit#11 scroll_bit::@7/(byte) current_bit#21 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte*) current_chargen#12 ← phi( scroll_bit::@3/(byte*) current_chargen#10 scroll_bit::@7/(byte*) current_chargen#19 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#12 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 - (boolean~) scroll_bit::$14 ← (byte~) scroll_bit::$12 == (byte) 0 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#14 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte*) nxt#13 ← phi( scroll_bit::@2/(byte*) nxt#33 scroll_bit::@5/(byte*) nxt#33 ) - (byte*) PROCPORT#2 ← phi( scroll_bit::@2/(byte*) PROCPORT#8 scroll_bit::@5/(byte*) PROCPORT#8 ) + (byte*) nxt#13 ← phi( scroll_bit::@2/(byte*) nxt#32 scroll_bit::@5/(byte*) nxt#32 ) + (byte*) PROCPORT#2 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 scroll_bit::@5/(byte*) PROCPORT#7 ) (byte) current_bit#11 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#14 ) (byte*) current_chargen#10 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#12 ) (byte) scroll_bit::r#3 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 scroll_bit::@5/(byte) scroll_bit::r#2 ) @@ -3189,11 +3146,11 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#3 - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r#1 != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) '*' + (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT#2) ← (byte) 55 @@ -3203,7 +3160,7 @@ scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 return to:@return @3: scope:[] from @2 - (byte*) CHARGEN#17 ← phi( @2/(byte*) CHARGEN#1 ) + (byte*) CHARGEN#16 ← phi( @2/(byte*) CHARGEN#1 ) (byte*) TEXT#1 ← phi( @2/(byte*) TEXT#0 ) (byte*) TEXT#0 ← (byte*) TEXT#1 to:@6 @@ -3223,23 +3180,23 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$0 (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$2 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$2 (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$4 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$4 (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$6 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$6 (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$8 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$8 (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$10 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$10 (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$12 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$12 (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$14 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#2 + (byte~) scroll_hard::$14 (byte) scroll_hard::i#0 ← (byte) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 @@ -3299,8 +3256,8 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 return to:@return @6: scope:[] from @3 - (byte*) TEXT#18 ← phi( @3/(byte*) TEXT#1 ) - (byte*) CHARGEN#16 ← phi( @3/(byte*) CHARGEN#17 ) + (byte*) TEXT#17 ← phi( @3/(byte*) TEXT#1 ) + (byte*) CHARGEN#15 ← phi( @3/(byte*) CHARGEN#16 ) call main param-assignment to:@7 @7: scope:[] from @6 @@ -3308,20 +3265,20 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @end: scope:[] from @7 Not aliassing across scopes: fillscreen::cursor#0 SCREEN#0 -Not aliassing across scopes: current_bit#5 scroll_bit::$1 +Not aliassing across scopes: current_bit#5 scroll_bit::$0 Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 -Not aliassing across scopes: current_chargen#5 scroll_bit::$8 -Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#14 (byte*) CHARGEN#16 (byte*) CHARGEN#1 (byte*) CHARGEN#17 -Alias (byte*) TEXT#0 = (byte*) TEXT#16 (byte*) TEXT#18 (byte*) TEXT#1 +Not aliassing across scopes: current_chargen#5 scroll_bit::$5 +Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#13 (byte*) CHARGEN#15 (byte*) CHARGEN#1 (byte*) CHARGEN#16 +Alias (byte*) TEXT#0 = (byte*) TEXT#15 (byte*) TEXT#17 (byte*) TEXT#1 Alias (byte*) SCROLL#1 = (byte*) SCROLL#11 Alias (byte*) PROCPORT#1 = (byte*) PROCPORT#10 -Alias (byte*) SCREEN#11 = (byte*) SCREEN#2 +Alias (byte*) SCREEN#10 = (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#10 = (byte*) current_chargen#12 Alias (byte) current_bit#11 = (byte) current_bit#14 -Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#8 -Alias (byte*) nxt#13 = (byte*) nxt#33 +Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#7 +Alias (byte*) nxt#13 = (byte*) nxt#32 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -3343,14 +3300,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#10 main::@2/(byte*) TEXT#13 main::@7/(byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 main::@2/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#10 main::@2/(byte*) TEXT#12 main::@7/(byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#11 main::@2/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#0 ) + (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#10 main::@2/(byte*) SCREEN#16 main::@7/(byte*) SCREEN#0 ) (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#1 main::@2/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#0 ) - (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#11 main::@2/(byte*) SCREEN#16 main::@7/(byte*) SCREEN#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#1 main::@2/(byte*) SCROLL#7 main::@7/(byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@2/(byte*) current_chargen#27 main::@7/(byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@2/(byte*) nxt#31 main::@7/(byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@2/(byte) scroll#18 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#1 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) @@ -3358,10 +3315,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (byte*) TEXT#10 ← phi( main::@2/(byte*) TEXT#13 main::@3/(byte*) TEXT#10 ) - (byte*) CHARGEN#10 ← phi( main::@2/(byte*) CHARGEN#11 main::@3/(byte*) CHARGEN#10 ) + (byte*) TEXT#10 ← phi( main::@2/(byte*) TEXT#12 main::@3/(byte*) TEXT#10 ) + (byte*) CHARGEN#11 ← phi( main::@2/(byte*) CHARGEN#10 main::@3/(byte*) CHARGEN#11 ) + (byte*) SCREEN#10 ← phi( main::@2/(byte*) SCREEN#16 main::@3/(byte*) SCREEN#10 ) (byte*) PROCPORT#1 ← phi( main::@2/(byte*) PROCPORT#14 main::@3/(byte*) PROCPORT#1 ) - (byte*) SCREEN#11 ← phi( main::@2/(byte*) SCREEN#16 main::@3/(byte*) SCREEN#11 ) (byte*) SCROLL#1 ← phi( main::@2/(byte*) SCROLL#7 main::@3/(byte*) SCROLL#1 ) (byte*) current_chargen#15 ← phi( main::@2/(byte*) current_chargen#27 main::@3/(byte*) current_chargen#15 ) (byte*) nxt#17 ← phi( main::@2/(byte*) nxt#31 main::@3/(byte*) nxt#17 ) @@ -3408,62 +3365,60 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#24 ← (byte) 1 + (byte) current_bit#23 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#17 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#15 scroll_bit::@8/(byte*) current_chargen#5 ) call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#13 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$3 ← (byte) current_bit#5 != (byte) 0 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#17 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#15 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#11 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#10 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#10 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#11 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) nxt#13 ← phi( scroll_bit::@1/(byte*) nxt#37 scroll_bit::@3/(byte*) nxt#13 ) - (byte*) PROCPORT#2 ← phi( scroll_bit::@1/(byte*) PROCPORT#1 scroll_bit::@3/(byte*) PROCPORT#2 ) - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) current_bit#11 ← phi( scroll_bit::@1/(byte) current_bit#21 scroll_bit::@3/(byte) current_bit#11 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte*) current_chargen#10 ← phi( scroll_bit::@1/(byte*) current_chargen#18 scroll_bit::@3/(byte*) current_chargen#10 ) +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) nxt#13 ← phi( scroll_bit::@3/(byte*) nxt#13 scroll_bit::@7/(byte*) nxt#36 ) + (byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#2 scroll_bit::@7/(byte*) PROCPORT#1 ) + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) current_bit#11 ← phi( scroll_bit::@3/(byte) current_bit#11 scroll_bit::@7/(byte) current_bit#21 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte*) current_chargen#10 ← phi( scroll_bit::@3/(byte*) current_chargen#10 scroll_bit::@7/(byte*) current_chargen#19 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#10 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#11 - (boolean~) scroll_bit::$14 ← (byte~) scroll_bit::$12 == (byte) 0 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#11 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r#1 != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) '*' + (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT#2) ← (byte) 55 @@ -3490,23 +3445,23 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$0 (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$2 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$2 (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$4 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$4 (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$6 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$6 (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$8 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$8 (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$10 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$10 (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$12 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$12 (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$14 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$14 (byte) scroll_hard::i#0 ← (byte) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 @@ -3573,9 +3528,13 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @end: scope:[] from @7 Not aliassing across scopes: fillscreen::cursor#0 SCREEN#0 -Not aliassing across scopes: current_bit#5 scroll_bit::$1 +Not aliassing across scopes: current_bit#5 scroll_bit::$0 Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 -Not aliassing across scopes: current_chargen#5 scroll_bit::$8 +Not aliassing across scopes: current_chargen#5 scroll_bit::$5 +Not aliassing identity: current_chargen#10 current_chargen#10 +Not aliassing identity: current_bit#11 current_bit#11 +Not aliassing identity: PROCPORT#2 PROCPORT#2 +Not aliassing identity: nxt#13 nxt#13 Self Phi Eliminated (byte*) RASTER#1 Self Phi Eliminated (byte*) BGCOL#4 Self Phi Eliminated (byte) scroll#18 @@ -3583,10 +3542,10 @@ Self Phi Eliminated (byte) current_bit#29 Self Phi Eliminated (byte*) nxt#31 Self Phi Eliminated (byte*) current_chargen#27 Self Phi Eliminated (byte*) SCROLL#7 -Self Phi Eliminated (byte*) SCREEN#16 Self Phi Eliminated (byte*) PROCPORT#14 -Self Phi Eliminated (byte*) CHARGEN#11 -Self Phi Eliminated (byte*) TEXT#13 +Self Phi Eliminated (byte*) SCREEN#16 +Self Phi Eliminated (byte*) CHARGEN#10 +Self Phi Eliminated (byte*) TEXT#12 Self Phi Eliminated (byte*) RASTER#2 Self Phi Eliminated (byte*) BGCOL#1 Self Phi Eliminated (byte) scroll#13 @@ -3594,9 +3553,9 @@ Self Phi Eliminated (byte) current_bit#13 Self Phi Eliminated (byte*) nxt#17 Self Phi Eliminated (byte*) current_chargen#15 Self Phi Eliminated (byte*) SCROLL#1 -Self Phi Eliminated (byte*) SCREEN#11 Self Phi Eliminated (byte*) PROCPORT#1 -Self Phi Eliminated (byte*) CHARGEN#10 +Self Phi Eliminated (byte*) SCREEN#10 +Self Phi Eliminated (byte*) CHARGEN#11 Self Phi Eliminated (byte*) TEXT#10 Self Phi Eliminated (byte*) current_chargen#10 Self Phi Eliminated (byte) current_bit#11 @@ -3633,14 +3592,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#10 main::@7/(byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#10 main::@7/(byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#0 ) + (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#10 main::@7/(byte*) SCREEN#0 ) (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#1 main::@7/(byte*) PROCPORT#0 ) - (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#11 main::@7/(byte*) SCREEN#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#1 main::@7/(byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@7/(byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@7/(byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#1 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@7/(byte*) RASTER#0 ) @@ -3648,10 +3607,10 @@ main::@2: scope:[main] from main::@1 main::@2 main::@7 if((boolean~) main::$1) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 main::@3 - (byte*) TEXT#10 ← phi( main::@2/(byte*) TEXT#13 ) - (byte*) CHARGEN#10 ← phi( main::@2/(byte*) CHARGEN#11 ) + (byte*) TEXT#10 ← phi( main::@2/(byte*) TEXT#12 ) + (byte*) CHARGEN#11 ← phi( main::@2/(byte*) CHARGEN#10 ) + (byte*) SCREEN#10 ← phi( main::@2/(byte*) SCREEN#16 ) (byte*) PROCPORT#1 ← phi( main::@2/(byte*) PROCPORT#14 ) - (byte*) SCREEN#11 ← phi( main::@2/(byte*) SCREEN#16 ) (byte*) SCROLL#1 ← phi( main::@2/(byte*) SCROLL#7 ) (byte*) current_chargen#15 ← phi( main::@2/(byte*) current_chargen#27 ) (byte*) nxt#17 ← phi( main::@2/(byte*) nxt#31 ) @@ -3698,62 +3657,60 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#24 ← (byte) 1 + (byte) current_bit#23 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 + (byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#17 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#15 scroll_bit::@8/(byte*) current_chargen#5 ) call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#13 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$3 ← (byte) current_bit#5 != (byte) 0 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#17 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#15 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#1) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#11 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#10 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#10 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#11 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) nxt#13 ← phi( scroll_bit::@1/(byte*) nxt#37 ) - (byte*) PROCPORT#2 ← phi( scroll_bit::@1/(byte*) PROCPORT#1 ) - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) current_bit#11 ← phi( scroll_bit::@1/(byte) current_bit#21 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte*) current_chargen#10 ← phi( scroll_bit::@1/(byte*) current_chargen#18 ) +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) nxt#13 ← phi( scroll_bit::@7/(byte*) nxt#36 ) + (byte*) PROCPORT#2 ← phi( scroll_bit::@7/(byte*) PROCPORT#1 ) + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) current_bit#11 ← phi( scroll_bit::@7/(byte) current_bit#21 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte*) current_chargen#10 ← phi( scroll_bit::@7/(byte*) current_chargen#19 ) (byte) scroll_bit::bits#0 ← (byte*) current_chargen#10 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#11 - (boolean~) scroll_bit::$14 ← (byte~) scroll_bit::$12 == (byte) 0 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#11 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r#1 != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) '*' + (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT#2) ← (byte) 55 @@ -3780,23 +3737,23 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 - (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$0 + (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$0 (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 - (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$2 + (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$2 (byte~) scroll_hard::$4 ← (byte) 40 * (byte) 2 - (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$4 + (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$4 (byte~) scroll_hard::$6 ← (byte) 40 * (byte) 3 - (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$6 + (byte[]) scroll_hard::line3#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$6 (byte~) scroll_hard::$8 ← (byte) 40 * (byte) 4 - (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$8 + (byte[]) scroll_hard::line4#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$8 (byte~) scroll_hard::$10 ← (byte) 40 * (byte) 5 - (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$10 + (byte[]) scroll_hard::line5#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$10 (byte~) scroll_hard::$12 ← (byte) 40 * (byte) 6 - (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$12 + (byte[]) scroll_hard::line6#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$12 (byte~) scroll_hard::$14 ← (byte) 40 * (byte) 7 - (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#11 + (byte~) scroll_hard::$14 + (byte[]) scroll_hard::line7#0 ← (byte*) SCREEN#10 + (byte~) scroll_hard::$14 (byte) scroll_hard::i#0 ← (byte) 0 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 @@ -3869,14 +3826,14 @@ Redundant Phi (byte) current_bit#13 (byte) current_bit#29 Redundant Phi (byte*) nxt#17 (byte*) nxt#31 Redundant Phi (byte*) current_chargen#15 (byte*) current_chargen#27 Redundant Phi (byte*) SCROLL#1 (byte*) SCROLL#7 -Redundant Phi (byte*) SCREEN#11 (byte*) SCREEN#16 Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#14 -Redundant Phi (byte*) CHARGEN#10 (byte*) CHARGEN#11 -Redundant Phi (byte*) TEXT#10 (byte*) TEXT#13 -Redundant Phi (byte*) current_chargen#10 (byte*) current_chargen#18 +Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#16 +Redundant Phi (byte*) CHARGEN#11 (byte*) CHARGEN#10 +Redundant Phi (byte*) TEXT#10 (byte*) TEXT#12 +Redundant Phi (byte*) current_chargen#10 (byte*) current_chargen#19 Redundant Phi (byte) current_bit#11 (byte) current_bit#21 Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#1 -Redundant Phi (byte*) nxt#13 (byte*) nxt#37 +Redundant Phi (byte*) nxt#13 (byte*) nxt#36 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 @@ -3908,14 +3865,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#13 main::@7/(byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#12 main::@7/(byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#16 main::@7/(byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#7 main::@7/(byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@7/(byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@7/(byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) @@ -3946,8 +3903,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((boolean~) scroll_soft::$1) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@3/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -3962,58 +3919,56 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#24 ← (byte) 1 + (byte) current_bit#23 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 + (boolean~) scroll_bit::$2 ← (byte) current_bit#5 != (byte) 0 + if((boolean~) scroll_bit::$2) goto scroll_bit::@1 + to:scroll_bit::@4 +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) call scroll_hard param-assignment to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 - (boolean~) scroll_bit::$3 ← (byte) current_bit#5 != (byte) 0 - if((boolean~) scroll_bit::$3) goto scroll_bit::@1 - to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - (boolean~) scroll_bit::$14 ← (byte~) scroll_bit::$12 == (byte) 0 - if((boolean~) scroll_bit::$14) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + (boolean~) scroll_bit::$12 ← (byte~) scroll_bit::$10 == (byte) 0 + if((boolean~) scroll_bit::$12) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 - (boolean~) scroll_bit::$16 ← (byte) scroll_bit::r#1 != (byte) 8 - if((boolean~) scroll_bit::$16) goto scroll_bit::@2 + (boolean~) scroll_bit::$15 ← (byte) scroll_bit::r#1 != (byte) 8 + if((boolean~) scroll_bit::$15) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) '*' + (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT#14) ← (byte) 55 @@ -4031,16 +3986,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$0 (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 @@ -4115,9 +4070,9 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 Simple Condition (boolean~) main::$1 if(*((byte*) RASTER#1)!=(byte) 254) goto main::@2 Simple Condition (boolean~) main::$2 if(*((byte*) RASTER#1)!=(byte) 255) goto main::@3 Simple Condition (boolean~) scroll_soft::$1 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 -Simple Condition (boolean~) scroll_bit::$3 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 -Simple Condition (boolean~) scroll_bit::$14 if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 -Simple Condition (boolean~) scroll_bit::$16 if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 +Simple Condition (boolean~) scroll_bit::$2 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 +Simple Condition (boolean~) scroll_bit::$12 if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 +Simple Condition (boolean~) scroll_bit::$15 if((byte) scroll_bit::r#1!=(byte) 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::$32 if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 Simple Condition (boolean~) fillscreen::$1 if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1 @@ -4142,14 +4097,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#13 main::@7/(byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#11 main::@7/(byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#12 main::@7/(byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#16 main::@7/(byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#7 main::@7/(byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@7/(byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@7/(byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(byte*) RASTER#0 ) @@ -4177,8 +4132,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@3/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -4193,45 +4148,43 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return @2: scope:[] from @1 - (byte) current_bit#24 ← (byte) 1 + (byte) current_bit#23 ← (byte) 1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 (byte) scroll_bit::r#0 ← (byte) 0 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte) current_bit#6 ← (byte) 128 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 (byte) scroll_bit::b#0 ← (byte) ' ' - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) scroll_bit::b#0 scroll_bit::@5/(byte) scroll_bit::b#1 ) @@ -4241,7 +4194,7 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 to:scroll_bit::@6 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 - (byte) scroll_bit::b#1 ← (byte) '*' + (byte) scroll_bit::b#1 ← (byte) 128 + (byte) ' ' to:scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 *((byte*) PROCPORT#14) ← (byte) 55 @@ -4258,16 +4211,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte~) scroll_hard::$0 ← (byte) 40 * (byte) 0 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (byte~) scroll_hard::$0 (byte~) scroll_hard::$2 ← (byte) 40 * (byte) 1 @@ -4347,11 +4300,11 @@ Constant (const byte*) TEXT#0 = "-= this is rex of camelot testing a scroller cr Constant (const byte) fillscreen::fill#0 = 32 Constant (const byte) scroll#15 = 7 Constant (const byte) scroll#14 = 7 -Constant (const byte) current_bit#24 = 1 +Constant (const byte) current_bit#23 = 1 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 = '*' +Constant (const byte) scroll_bit::b#1 = 128+' ' Constant (const byte) scroll_hard::$0 = 40*0 Constant (const byte) scroll_hard::$2 = 40*1 Constant (const byte) scroll_hard::$4 = 40*2 @@ -4374,14 +4327,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#13 main::@7/(const byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#11 main::@7/(const byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#12 main::@7/(const byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(const byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#16 main::@7/(const byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#7 main::@7/(const byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@7/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@7/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) @@ -4408,8 +4361,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@3/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(const byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -4425,39 +4378,37 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -4483,16 +4434,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 @@ -4566,14 +4517,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#13 main::@7/(const byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#11 main::@7/(const byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#12 main::@7/(const byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(const byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#16 main::@7/(const byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#7 main::@7/(const byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@7/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@7/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) @@ -4600,8 +4551,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@3/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(const byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -4617,39 +4568,37 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -4675,16 +4624,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 @@ -4758,14 +4707,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#13 main::@7/(const byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#11 main::@7/(const byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#12 main::@7/(const byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(const byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#16 main::@7/(const byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#7 main::@7/(const byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@7/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@7/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) @@ -4792,8 +4741,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@3/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(const byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -4809,39 +4758,37 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 + (byte) 40 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte) 40 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -4867,16 +4814,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 @@ -4966,14 +4913,14 @@ main::@7: scope:[main] from main main::@1: scope:[main] from main::@8 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 main::@7 - (byte*) TEXT#13 ← phi( main::@1/(byte*) TEXT#13 main::@7/(const byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#11 main::@7/(const byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#12 main::@7/(const byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(const byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main::@1/(byte*) SCREEN#16 main::@7/(const byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#14 main::@7/(const byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#7 main::@7/(const byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#0 main::@7/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@1/(byte*) nxt#0 main::@7/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@1/(byte) current_bit#0 main::@7/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@1/(byte) scroll#0 main::@7/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#4 main::@7/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#1 main::@7/(const byte*) RASTER#0 ) @@ -5000,8 +4947,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@3/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@3/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@3/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(const byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -5017,39 +4964,37 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 @2: scope:[] from @1 to:@3 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 40+(byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -5075,16 +5020,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 @@ -5176,14 +5121,14 @@ main: scope:[main] from @6 call fillscreen param-assignment to:main::@2 main::@2: scope:[main] from main main::@2 main::@8 - (byte*) TEXT#13 ← phi( main::@8/(byte*) TEXT#13 main/(const byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main::@8/(byte*) CHARGEN#11 main/(const byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main::@8/(byte*) PROCPORT#14 main/(const byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main::@8/(byte*) TEXT#12 main/(const byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main::@8/(byte*) CHARGEN#10 main/(const byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main::@8/(byte*) SCREEN#16 main/(const byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main::@8/(byte*) PROCPORT#14 main/(const byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main::@8/(byte*) SCROLL#7 main/(const byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main::@8/(byte*) BGCOL#4 main/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main::@8/(byte*) RASTER#1 main/(const byte*) RASTER#0 ) @@ -5208,8 +5153,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(const byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -5221,39 +5166,37 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 40+(byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -5277,16 +5220,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 @@ -5348,21 +5291,21 @@ Not culling empty block because it shares successor with its predecessor. (label Not aliassing identity: RASTER#1 RASTER#1 Not aliassing identity: BGCOL#4 BGCOL#4 Not aliassing identity: SCROLL#7 SCROLL#7 -Not aliassing identity: SCREEN#16 SCREEN#16 Not aliassing identity: PROCPORT#14 PROCPORT#14 -Not aliassing identity: CHARGEN#11 CHARGEN#11 -Not aliassing identity: TEXT#13 TEXT#13 -Not aliassing across scopes: current_bit#5 scroll_bit::$1 -Not aliassing across scopes: scroll_bit::$9 SCREEN#16 +Not aliassing identity: SCREEN#16 SCREEN#16 +Not aliassing identity: CHARGEN#10 CHARGEN#10 +Not aliassing identity: TEXT#12 TEXT#12 +Not aliassing across scopes: current_bit#5 scroll_bit::$0 +Not aliassing across scopes: scroll_bit::$7 SCREEN#16 Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 -Not aliassing across scopes: current_chargen#5 scroll_bit::$8 +Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Self Phi Eliminated (byte*) RASTER#1 Self Phi Eliminated (byte*) BGCOL#4 Self Phi Eliminated (byte*) SCROLL#7 -Self Phi Eliminated (byte*) SCREEN#16 Self Phi Eliminated (byte*) PROCPORT#14 -Self Phi Eliminated (byte*) CHARGEN#11 -Self Phi Eliminated (byte*) TEXT#13 +Self Phi Eliminated (byte*) SCREEN#16 +Self Phi Eliminated (byte*) CHARGEN#10 +Self Phi Eliminated (byte*) TEXT#12 Succesful SSA optimization Pass2SelfPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -5371,14 +5314,14 @@ main: scope:[main] from @6 call fillscreen param-assignment to:main::@2 main::@2: scope:[main] from main main::@2 main::@8 - (byte*) TEXT#13 ← phi( main/(const byte*) TEXT#0 ) - (byte*) CHARGEN#11 ← phi( main/(const byte*) CHARGEN#0 ) - (byte*) PROCPORT#14 ← phi( main/(const byte*) PROCPORT#0 ) + (byte*) TEXT#12 ← phi( main/(const byte*) TEXT#0 ) + (byte*) CHARGEN#10 ← phi( main/(const byte*) CHARGEN#0 ) (byte*) SCREEN#16 ← phi( main/(const byte*) SCREEN#0 ) + (byte*) PROCPORT#14 ← phi( main/(const byte*) PROCPORT#0 ) (byte*) SCROLL#7 ← phi( main/(const byte*) SCROLL#0 ) (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) (byte*) BGCOL#4 ← phi( main/(const byte*) BGCOL#0 ) (byte*) RASTER#1 ← phi( main/(const byte*) RASTER#0 ) @@ -5403,8 +5346,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(const byte) scroll#14 ) *((byte*) SCROLL#7) ← (byte) scroll#0 @@ -5416,39 +5359,37 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((byte*) PROCPORT#14) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (byte*) SCREEN#16 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 40+(byte) 39 + (byte*~) scroll_bit::$7 ← (byte*) SCREEN#16 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (byte*) CHARGEN#11 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (byte*) CHARGEN#10 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -5472,16 +5413,16 @@ next_char: scope:[next_char] from scroll_bit::@4 to:next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2 (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) - (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#13 ) + (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(byte*) TEXT#12 ) (byte*) nxt#15 ← ++ (byte*) nxt#18 to:next_char::@return next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((byte*) TEXT#13) + (byte) next_char::c#1 ← *((byte*) TEXT#12) to:next_char::@1 next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte[]) scroll_hard::line0#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$0 (byte[]) scroll_hard::line1#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$2 (byte[]) scroll_hard::line2#0 ← (byte*) SCREEN#16 + (const byte) scroll_hard::$4 @@ -5542,10 +5483,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 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*) SCREEN#16 (const byte*) SCREEN#0 Redundant Phi (byte*) PROCPORT#14 (const byte*) PROCPORT#0 -Redundant Phi (byte*) CHARGEN#11 (const byte*) CHARGEN#0 -Redundant Phi (byte*) TEXT#13 (const byte*) TEXT#0 +Redundant Phi (byte*) SCREEN#16 (const byte*) SCREEN#0 +Redundant Phi (byte*) CHARGEN#10 (const byte*) CHARGEN#0 +Redundant Phi (byte*) TEXT#12 (const byte*) TEXT#0 Succesful SSA optimization Pass2RedundantPhiElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -5556,7 +5497,7 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 to:main::@3 @@ -5579,8 +5520,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(const byte) scroll#14 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 @@ -5592,39 +5533,37 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((const byte*) PROCPORT#0) ← (byte) 50 - (byte*~) scroll_bit::$9 ← (const byte*) SCREEN#0 - (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$9 + (byte) 40+(byte) 39 + (byte*~) scroll_bit::$7 ← (const byte*) SCREEN#0 + (byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$7 + (byte) 40+(byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -5657,7 +5596,7 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 (byte[]) scroll_hard::line0#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$0 (byte[]) scroll_hard::line1#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$2 (byte[]) scroll_hard::line2#0 ← (const byte*) SCREEN#0 + (const byte) scroll_hard::$4 @@ -5715,7 +5654,7 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 to:@end @end: scope:[] from @6 -Constant (const byte*) scroll_bit::$9 = SCREEN#0 +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 @@ -5734,7 +5673,7 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 to:main::@3 @@ -5757,8 +5696,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(const byte) scroll#14 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 @@ -5770,38 +5709,36 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((const byte*) PROCPORT#0) ← (byte) 50 - (byte*) scroll_bit::sc#0 ← (const byte*) scroll_bit::$9 + (byte) 40+(byte) 39 + (byte*) scroll_bit::sc#0 ← (const byte*) scroll_bit::$7 + (byte) 40+(byte) 39 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -5834,7 +5771,7 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +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 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) @@ -5884,7 +5821,7 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 to:@end @end: scope:[] from @6 -Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$9+40+39 +Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$7+40+39 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -5895,7 +5832,7 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 to:main::@3 @@ -5918,8 +5855,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(const byte) scroll#14 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 @@ -5931,37 +5868,35 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((const byte*) PROCPORT#0) ← (byte) 50 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -5994,7 +5929,7 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +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 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) @@ -6078,7 +6013,7 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 to:main::@3 @@ -6101,8 +6036,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(const byte) scroll#14 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 @@ -6114,37 +6049,35 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((const byte*) PROCPORT#0) ← (byte) 50 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -6177,7 +6110,7 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +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 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) @@ -6236,9 +6169,9 @@ Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i# 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 Not culling empty block because it shares successor with its predecessor. (label) scroll_bit::@5 -Not aliassing across scopes: current_bit#5 scroll_bit::$1 +Not aliassing across scopes: current_bit#5 scroll_bit::$0 Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 -Not aliassing across scopes: current_chargen#5 scroll_bit::$8 +Not aliassing across scopes: current_chargen#5 scroll_bit::$5 Alias (byte) scroll_hard::i#2 = (byte~) scroll_hard::$16 (byte~) scroll_hard::$18 (byte~) scroll_hard::$20 (byte~) scroll_hard::$22 (byte~) scroll_hard::$24 (byte~) scroll_hard::$26 (byte~) scroll_hard::$28 (byte~) scroll_hard::$30 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @@ -6250,7 +6183,7 @@ main: scope:[main] from @6 main::@2: scope:[main] from main main::@2 main::@8 (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#0 main/(const byte*) CHARGEN#0 ) (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#0 main/(const byte*) TEXT#0 ) - (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#24 ) + (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#0 main/(const byte) current_bit#23 ) (byte) scroll#18 ← phi( main::@8/(byte) scroll#0 main/(const byte) scroll#15 ) if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 to:main::@3 @@ -6273,8 +6206,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(const byte) scroll#14 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 @@ -6286,37 +6219,35 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(const byte) current_bit#6 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((const byte*) PROCPORT#0) ← (byte) 50 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) scroll_bit::sc#0 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(const byte) scroll_bit::r#0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) scroll_bit::sc#0 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(const byte) scroll_bit::r#0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(const byte) scroll_bit::b#0 scroll_bit::@5/(const byte) scroll_bit::b#1 ) @@ -6349,7 +6280,7 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +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 (byte) scroll_hard::i#2 ← phi( scroll_hard/(const byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 ) @@ -6391,9 +6322,9 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 to:@end @end: scope:[] from @6 -Not aliassing across scopes: current_bit#5 scroll_bit::$1 +Not aliassing across scopes: current_bit#5 scroll_bit::$0 Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 -Not aliassing across scopes: current_chargen#5 scroll_bit::$8 +Not aliassing across scopes: current_chargen#5 scroll_bit::$5 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 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 @@ -6411,9 +6342,9 @@ Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i# 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 Not culling empty block because it shares successor with its predecessor. (label) scroll_bit::@5 -Not aliassing across scopes: current_bit#5 scroll_bit::$1 +Not aliassing across scopes: current_bit#5 scroll_bit::$0 Not aliassing across scopes: scroll_bit::c#0 next_char::c#2 -Not aliassing across scopes: current_chargen#5 scroll_bit::$8 +Not aliassing across scopes: current_chargen#5 scroll_bit::$5 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 Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2 @@ -6448,11 +6379,11 @@ Inlining constant with var siblings (const byte) scroll#15 Inlining constant with var siblings (const byte) scroll#14 Inlining constant with var siblings (const byte) scroll#14 Inlining constant with var siblings (const byte) scroll#14 -Inlining constant with var siblings (const byte) current_bit#24 -Inlining constant with var siblings (const byte) current_bit#24 -Inlining constant with var siblings (const byte) current_bit#24 -Inlining constant with var siblings (const byte) current_bit#24 -Inlining constant with different constant siblings (const byte) current_bit#24 +Inlining constant with var siblings (const byte) current_bit#23 +Inlining constant with var siblings (const byte) current_bit#23 +Inlining constant with var siblings (const byte) current_bit#23 +Inlining constant with var siblings (const byte) current_bit#23 +Inlining constant with different constant siblings (const byte) current_bit#23 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 @@ -6464,16 +6395,16 @@ Constant inlined scroll#14 = (byte) 7 Constant inlined scroll#15 = (byte) 7 Constant inlined scroll_hard::$14 = (byte) 40*(byte) 7 Constant inlined scroll_hard::$12 = (byte) 40*(byte) 6 -Constant inlined scroll_bit::$9 = (const byte*) SCREEN#0 +Constant inlined scroll_bit::$7 = (const byte*) SCREEN#0 Constant inlined scroll_hard::$0 = (byte) 40*(byte) 0 Constant inlined scroll_bit::r#0 = (byte) 0 Constant inlined scroll_hard::$2 = (byte) 40*(byte) 1 -Constant inlined scroll_bit::b#1 = (byte) '*' +Constant inlined scroll_bit::b#1 = (byte) 128+(byte) ' ' +Constant inlined current_bit#23 = (byte) 1 Constant inlined scroll_bit::b#0 = (byte) ' ' Constant inlined fillscreen::$0 = (const byte*) SCREEN#0+(word) 1000 Constant inlined scroll_hard::$4 = (byte) 40*(byte) 2 Constant inlined fillscreen::cursor#0 = (const byte*) SCREEN#0 -Constant inlined current_bit#24 = (byte) 1 Constant inlined scroll_hard::$6 = (byte) 40*(byte) 3 Constant inlined scroll_bit::sc#0 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 Constant inlined scroll_hard::i#0 = (byte) 0 @@ -6511,8 +6442,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 to:scroll_soft::@2 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) - (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) + (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) + (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) *((const byte*) SCROLL#0) ← (byte) scroll#0 @@ -6524,40 +6455,38 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 return to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 to:scroll_bit::@4 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) - (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) + (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) + (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((const byte*) PROCPORT#0) ← (byte) 50 to:scroll_bit::@2 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 to:scroll_bit::@1 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) SCREEN#0+(byte) 40+(byte) 39 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) 0 scroll_bit::@3/(byte) scroll_bit::r#1 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) '*' ) + (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 @@ -6587,7 +6516,7 @@ next_char::@2: scope:[next_char] from next_char next_char::@return: scope:[next_char] from next_char::@1 return to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit +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 (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) @@ -6654,7 +6583,7 @@ FINAL SYMBOL TABLE (byte) current_bit#5 (byte*) current_chargen (byte*) current_chargen#0 -(byte*) current_chargen#18 +(byte*) current_chargen#19 (byte*) current_chargen#27 (byte*) current_chargen#5 (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) @@ -6686,15 +6615,16 @@ FINAL SYMBOL TABLE (byte*) nxt#15 (byte*) nxt#18 (byte*) nxt#31 -(byte*) nxt#37 +(byte*) nxt#36 (byte) scroll (byte) scroll#0 (byte) scroll#18 (byte) scroll#3 (void()) scroll_bit() -(byte~) scroll_bit::$1 -(byte~) scroll_bit::$12 -(byte*~) scroll_bit::$8 +(byte~) scroll_bit::$0 +(byte~) scroll_bit::$10 +(word~) scroll_bit::$4 +(byte*~) scroll_bit::$5 (label) scroll_bit::@1 (label) scroll_bit::@2 (label) scroll_bit::@3 @@ -6710,9 +6640,6 @@ FINAL SYMBOL TABLE (byte) scroll_bit::bits#0 (word) scroll_bit::c (word) scroll_bit::c#0 -(word) scroll_bit::c#1 -(word) scroll_bit::c#2 -(word) scroll_bit::c#3 (byte) scroll_bit::r (byte) scroll_bit::r#1 (byte) scroll_bit::r#2 @@ -6754,15 +6681,15 @@ FINAL SYMBOL TABLE (label) scroll_soft::@2 (label) scroll_soft::@return -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::@7 scroll_bit::@4 scroll_bit::@8 scroll_bit::@1 scroll_bit::@2 scroll_bit::@5 scroll_bit::@3 scroll_bit::@6 scroll_bit::@return next_char next_char::@2 next_char::@1 next_char::@return scroll_hard scroll_hard::@1 scroll_hard::@return fillscreen fillscreen::@1 fillscreen::@return +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 Added new block during phi lifting main::@9(between main::@8 and main::@2) Added new block during phi lifting scroll_soft::@4(between scroll_soft and scroll_soft::@1) -Added new block during phi lifting scroll_bit::@9(between scroll_bit::@7 and scroll_bit::@1) +Added new block during phi lifting scroll_bit::@9(between scroll_bit and scroll_bit::@1) Added new block during phi lifting scroll_bit::@10(between scroll_bit::@3 and scroll_bit::@2) -Added new block during phi lifting next_char::@4(between next_char and next_char::@1) Added new block during phi lifting scroll_hard::@3(between scroll_hard::@1 and scroll_hard::@1) +Added new block during phi lifting next_char::@4(between next_char and next_char::@1) Added new block during phi lifting fillscreen::@3(between fillscreen::@1 and fillscreen::@1) -Block Sequence Planned @begin @6 @end main main::@2 main::@3 main::@5 main::@8 main::@return main::@9 scroll_soft scroll_soft::@2 scroll_soft::@1 scroll_soft::@return scroll_soft::@4 scroll_bit scroll_bit::@7 scroll_bit::@4 scroll_bit::@8 scroll_bit::@1 scroll_bit::@2 scroll_bit::@5 scroll_bit::@3 scroll_bit::@6 scroll_bit::@return scroll_bit::@10 scroll_bit::@9 next_char next_char::@2 next_char::@1 next_char::@return next_char::@4 scroll_hard scroll_hard::@1 scroll_hard::@return scroll_hard::@3 fillscreen fillscreen::@1 fillscreen::@return fillscreen::@3 +Block Sequence Planned @begin @6 @end main main::@2 main::@3 main::@5 main::@8 main::@return main::@9 scroll_soft scroll_soft::@2 scroll_soft::@1 scroll_soft::@return scroll_soft::@4 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_bit::@10 scroll_bit::@9 scroll_hard scroll_hard::@1 scroll_hard::@return scroll_hard::@3 next_char next_char::@2 next_char::@1 next_char::@return next_char::@4 fillscreen fillscreen::@1 fillscreen::@return fillscreen::@3 CONTROL FLOW GRAPH - PHI LIFTED @begin: scope:[] from to:@6 @@ -6807,8 +6734,8 @@ scroll_soft: scope:[scroll_soft] from main::@5 scroll_soft::@2: scope:[scroll_soft] from scroll_soft call scroll_bit param-assignment (byte~) current_bit#35 ← (byte) current_bit#21 - (byte*~) nxt#41 ← (byte*) nxt#37 - (byte*~) current_chargen#34 ← (byte*) current_chargen#18 + (byte*~) nxt#41 ← (byte*) nxt#36 + (byte*~) current_chargen#34 ← (byte*) current_chargen#19 to:scroll_soft::@1 scroll_soft::@1: scope:[scroll_soft] from scroll_soft::@2 scroll_soft::@4 (byte*) current_chargen#0 ← phi( scroll_soft::@4/(byte*~) current_chargen#33 scroll_soft::@2/(byte*~) current_chargen#34 ) @@ -6827,44 +6754,42 @@ scroll_soft::@4: scope:[scroll_soft] from scroll_soft (byte*~) current_chargen#33 ← (byte*) current_chargen#27 to:scroll_soft::@1 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - call scroll_hard param-assignment - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 - (byte) current_bit#5 ← (byte~) scroll_bit::$1 + (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 + (byte) current_bit#5 ← (byte~) scroll_bit::$0 if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@9 to:scroll_bit::@4 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@4: scope:[scroll_bit] from scroll_bit call next_char param-assignment to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 (word) scroll_bit::c#0 ← (byte) next_char::c#2 - (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 - (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 - (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 - (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 - (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 + (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 + (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 + (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 (byte*~) current_chargen#36 ← (byte*) current_chargen#5 (byte*~) nxt#43 ← (byte*) nxt#15 to:scroll_bit::@1 scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@8 scroll_bit::@9 - (byte*) nxt#37 ← phi( scroll_bit::@9/(byte*~) nxt#42 scroll_bit::@8/(byte*~) nxt#43 ) + (byte*) nxt#36 ← phi( scroll_bit::@9/(byte*~) nxt#42 scroll_bit::@8/(byte*~) nxt#43 ) (byte) current_bit#21 ← phi( scroll_bit::@9/(byte~) current_bit#36 scroll_bit::@8/(byte) 128 ) - (byte*) current_chargen#18 ← phi( scroll_bit::@9/(byte*~) current_chargen#35 scroll_bit::@8/(byte*~) current_chargen#36 ) + (byte*) current_chargen#19 ← phi( scroll_bit::@9/(byte*~) current_chargen#35 scroll_bit::@8/(byte*~) current_chargen#36 ) + call scroll_hard param-assignment + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } *((const byte*) PROCPORT#0) ← (byte) 50 to:scroll_bit::@2 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@10 - (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) SCREEN#0+(byte) 40+(byte) 39 scroll_bit::@10/(byte*~) scroll_bit::sc#5 ) - (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) 0 scroll_bit::@10/(byte~) scroll_bit::r#5 ) - (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 - (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 - if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@10 scroll_bit::@7 + (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@10/(byte*~) scroll_bit::sc#5 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) + (byte) scroll_bit::r#2 ← phi( scroll_bit::@10/(byte~) scroll_bit::r#5 scroll_bit::@7/(byte) 0 ) + (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 + (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 + if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) '*' ) + (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 @@ -6881,32 +6806,12 @@ scroll_bit::@10: scope:[scroll_bit] from scroll_bit::@3 (byte~) scroll_bit::r#5 ← (byte) scroll_bit::r#1 (byte*~) scroll_bit::sc#5 ← (byte*) scroll_bit::sc#1 to:scroll_bit::@2 -scroll_bit::@9: scope:[scroll_bit] from scroll_bit::@7 +scroll_bit::@9: scope:[scroll_bit] from scroll_bit (byte*~) current_chargen#35 ← (byte*) current_chargen#27 (byte~) current_bit#36 ← (byte) current_bit#5 (byte*~) nxt#42 ← (byte*) nxt#31 to:scroll_bit::@1 -next_char: scope:[next_char] from scroll_bit::@4 - (byte) next_char::c#0 ← *((byte*) nxt#31) - if((byte) next_char::c#0!=(byte) '@') goto next_char::@4 - to:next_char::@2 -next_char::@2: scope:[next_char] from next_char - (byte) next_char::c#1 ← *((const byte*) TEXT#0) - (byte~) next_char::c#4 ← (byte) next_char::c#1 - to:next_char::@1 -next_char::@1: scope:[next_char] from next_char::@2 next_char::@4 - (byte) next_char::c#2 ← phi( next_char::@4/(byte~) next_char::c#3 next_char::@2/(byte~) next_char::c#4 ) - (byte*) nxt#18 ← phi( next_char::@4/(byte*~) nxt#44 next_char::@2/(const byte*) TEXT#0 ) - (byte*) nxt#15 ← ++ (byte*) nxt#18 - to:next_char::@return -next_char::@return: scope:[next_char] from next_char::@1 - return - to:@return -next_char::@4: scope:[next_char] from next_char - (byte*~) nxt#44 ← (byte*) nxt#31 - (byte~) next_char::c#3 ← (byte) next_char::c#0 - to:next_char::@1 -scroll_hard: scope:[scroll_hard] from scroll_bit +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@3 (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@3/(byte~) scroll_hard::i#3 ) @@ -6935,6 +6840,26 @@ scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 scroll_hard::@3: scope:[scroll_hard] from scroll_hard::@1 (byte~) scroll_hard::i#3 ← (byte) scroll_hard::i#1 to:scroll_hard::@1 +next_char: scope:[next_char] from scroll_bit::@4 + (byte) next_char::c#0 ← *((byte*) nxt#31) + if((byte) next_char::c#0!=(byte) '@') goto next_char::@4 + to:next_char::@2 +next_char::@2: scope:[next_char] from next_char + (byte) next_char::c#1 ← *((const byte*) TEXT#0) + (byte~) next_char::c#4 ← (byte) next_char::c#1 + to:next_char::@1 +next_char::@1: scope:[next_char] from next_char::@2 next_char::@4 + (byte) next_char::c#2 ← phi( next_char::@4/(byte~) next_char::c#3 next_char::@2/(byte~) next_char::c#4 ) + (byte*) nxt#18 ← phi( next_char::@4/(byte*~) nxt#44 next_char::@2/(const byte*) TEXT#0 ) + (byte*) nxt#15 ← ++ (byte*) nxt#18 + to:next_char::@return +next_char::@return: scope:[next_char] from next_char::@1 + return + to:@return +next_char::@4: scope:[next_char] from next_char + (byte*~) nxt#44 ← (byte*) nxt#31 + (byte~) next_char::c#3 ← (byte) next_char::c#0 + to:next_char::@1 fillscreen: scope:[fillscreen] from main to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@3 @@ -6951,14 +6876,13 @@ fillscreen::@3: scope:[fillscreen] from fillscreen::@1 to:fillscreen::@1 Adding NOP phi() at start of main -Adding NOP phi() at start of scroll_bit Adding NOP phi() at start of scroll_hard Adding NOP phi() at start of fillscreen CALL GRAPH Calls in [] to main:0 Calls in [main] to fillscreen:2 scroll_soft:7 Calls in [scroll_soft] to scroll_bit:17 -Calls in [scroll_bit] to scroll_hard:29 next_char:33 +Calls in [scroll_bit] to next_char:31 scroll_hard:39 Propagating live ranges... Propagating live ranges... @@ -6977,6 +6901,7 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... +Propagating live ranges... CONTROL FLOW GRAPH - LIVE RANGES FOUND @begin: scope:[] from to:@6 @@ -7020,10 +6945,10 @@ scroll_soft: scope:[scroll_soft] from main::@5 [16] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@4 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft - [17] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] - [18] (byte~) current_bit#35 ← (byte) current_bit#21 [ current_bit#35 nxt#37 current_chargen#18 ] - [19] (byte*~) nxt#41 ← (byte*) nxt#37 [ current_bit#35 nxt#41 current_chargen#18 ] - [20] (byte*~) current_chargen#34 ← (byte*) current_chargen#18 [ current_bit#35 nxt#41 current_chargen#34 ] + [17] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] + [18] (byte~) current_bit#35 ← (byte) current_bit#21 [ current_bit#35 nxt#36 current_chargen#19 ] + [19] (byte*~) nxt#41 ← (byte*) nxt#36 [ current_bit#35 nxt#41 current_chargen#19 ] + [20] (byte*~) current_chargen#34 ← (byte*) current_chargen#19 [ current_bit#35 nxt#41 current_chargen#34 ] to:scroll_soft::@1 scroll_soft::@1: scope:[scroll_soft] from scroll_soft::@2 scroll_soft::@4 [21] (byte*) current_chargen#0 ← phi( scroll_soft::@4/(byte*~) current_chargen#33 scroll_soft::@2/(byte*~) current_chargen#34 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] @@ -7042,130 +6967,127 @@ scroll_soft::@4: scope:[scroll_soft] from scroll_soft [27] (byte*~) current_chargen#33 ← (byte*) current_chargen#27 [ scroll#24 current_bit#34 nxt#40 current_chargen#33 ] to:scroll_soft::@1 scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [28] phi() [ current_bit#29 nxt#31 current_chargen#27 ] - [29] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - [30] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] - [31] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] - [32] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@9 [ nxt#31 current_chargen#27 current_bit#5 ] + [28] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] + [29] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] + [30] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@9 [ nxt#31 current_chargen#27 current_bit#5 ] to:scroll_bit::@4 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 - [33] call next_char param-assignment [ next_char::c#2 nxt#15 ] +scroll_bit::@4: scope:[scroll_bit] from scroll_bit + [31] call next_char param-assignment [ next_char::c#2 nxt#15 ] to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 - [34] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] - [35] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] - [36] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] - [37] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] - [38] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] - [39] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] - [40] (byte*~) current_chargen#36 ← (byte*) current_chargen#5 [ current_chargen#36 nxt#15 ] - [41] (byte*~) nxt#43 ← (byte*) nxt#15 [ current_chargen#36 nxt#43 ] + [32] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] + [33] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] + [34] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] + [35] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] + [36] (byte*~) current_chargen#36 ← (byte*) current_chargen#5 [ current_chargen#36 nxt#15 ] + [37] (byte*~) nxt#43 ← (byte*) nxt#15 [ current_chargen#36 nxt#43 ] to:scroll_bit::@1 scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@8 scroll_bit::@9 - [42] (byte*) nxt#37 ← phi( scroll_bit::@9/(byte*~) nxt#42 scroll_bit::@8/(byte*~) nxt#43 ) [ current_bit#21 nxt#37 current_chargen#18 ] - [42] (byte) current_bit#21 ← phi( scroll_bit::@9/(byte~) current_bit#36 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#37 current_chargen#18 ] - [42] (byte*) current_chargen#18 ← phi( scroll_bit::@9/(byte*~) current_chargen#35 scroll_bit::@8/(byte*~) current_chargen#36 ) [ current_bit#21 nxt#37 current_chargen#18 ] + [38] (byte*) nxt#36 ← phi( scroll_bit::@9/(byte*~) nxt#42 scroll_bit::@8/(byte*~) nxt#43 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [38] (byte) current_bit#21 ← phi( scroll_bit::@9/(byte~) current_bit#36 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [38] (byte*) current_chargen#19 ← phi( scroll_bit::@9/(byte*~) current_chargen#35 scroll_bit::@8/(byte*~) current_chargen#36 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [39] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [44] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] + [41] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] to:scroll_bit::@2 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@10 - [45] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) SCREEN#0+(byte) 40+(byte) 39 scroll_bit::@10/(byte*~) scroll_bit::sc#5 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] - [45] (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) 0 scroll_bit::@10/(byte~) scroll_bit::r#5 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] - [46] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] - [47] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] - [48] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@10 scroll_bit::@7 + [42] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@10/(byte*~) scroll_bit::sc#5 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [42] (byte) scroll_bit::r#2 ← phi( scroll_bit::@10/(byte~) scroll_bit::r#5 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [43] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] + [44] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] + [45] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [49] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) '*' ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] - [50] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] - [51] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] - [52] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::sc#1 scroll_bit::r#1 ] - [53] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@10 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::sc#1 scroll_bit::r#1 ] + [46] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] + [47] *((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 ] + [48] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] + [49] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::sc#1 scroll_bit::r#1 ] + [50] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@10 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::sc#1 scroll_bit::r#1 ] to:scroll_bit::@6 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - [54] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] + [51] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 - [56] return [ current_bit#21 nxt#37 current_chargen#18 ] + [53] return [ current_bit#21 nxt#36 current_chargen#19 ] to:@return scroll_bit::@10: scope:[scroll_bit] from scroll_bit::@3 - [57] (byte~) scroll_bit::r#5 ← (byte) scroll_bit::r#1 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#5 scroll_bit::sc#1 ] - [58] (byte*~) scroll_bit::sc#5 ← (byte*) scroll_bit::sc#1 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#5 scroll_bit::sc#5 ] + [54] (byte~) scroll_bit::r#5 ← (byte) scroll_bit::r#1 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#5 scroll_bit::sc#1 ] + [55] (byte*~) scroll_bit::sc#5 ← (byte*) scroll_bit::sc#1 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#5 scroll_bit::sc#5 ] to:scroll_bit::@2 -scroll_bit::@9: scope:[scroll_bit] from scroll_bit::@7 - [59] (byte*~) current_chargen#35 ← (byte*) current_chargen#27 [ nxt#31 current_bit#5 current_chargen#35 ] - [60] (byte~) current_bit#36 ← (byte) current_bit#5 [ nxt#31 current_chargen#35 current_bit#36 ] - [61] (byte*~) nxt#42 ← (byte*) nxt#31 [ current_chargen#35 current_bit#36 nxt#42 ] +scroll_bit::@9: scope:[scroll_bit] from scroll_bit + [56] (byte*~) current_chargen#35 ← (byte*) current_chargen#27 [ nxt#31 current_bit#5 current_chargen#35 ] + [57] (byte~) current_bit#36 ← (byte) current_bit#5 [ nxt#31 current_chargen#35 current_bit#36 ] + [58] (byte*~) nxt#42 ← (byte*) nxt#31 [ current_chargen#35 current_bit#36 nxt#42 ] to:scroll_bit::@1 -next_char: scope:[next_char] from scroll_bit::@4 - [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] - [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@4 [ nxt#31 next_char::c#0 ] - to:next_char::@2 -next_char::@2: scope:[next_char] from next_char - [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] - [65] (byte~) next_char::c#4 ← (byte) next_char::c#1 [ next_char::c#4 ] - to:next_char::@1 -next_char::@1: scope:[next_char] from next_char::@2 next_char::@4 - [66] (byte) next_char::c#2 ← phi( next_char::@4/(byte~) next_char::c#3 next_char::@2/(byte~) next_char::c#4 ) [ next_char::c#2 nxt#18 ] - [66] (byte*) nxt#18 ← phi( next_char::@4/(byte*~) nxt#44 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] - [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] - to:next_char::@return -next_char::@return: scope:[next_char] from next_char::@1 - [68] return [ next_char::c#2 nxt#15 ] - to:@return -next_char::@4: scope:[next_char] from next_char - [69] (byte*~) nxt#44 ← (byte*) nxt#31 [ next_char::c#0 nxt#44 ] - [70] (byte~) next_char::c#3 ← (byte) next_char::c#0 [ nxt#44 next_char::c#3 ] - to:next_char::@1 -scroll_hard: scope:[scroll_hard] from scroll_bit - [71] phi() [ ] +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 + [59] phi() [ ] to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@3 - [72] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@3/(byte~) scroll_hard::i#3 ) [ scroll_hard::i#2 ] - [73] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] - [74] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] - [75] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] - [76] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] - [77] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] - [78] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] - [79] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] - [80] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] - [81] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] - [82] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] - [83] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] - [84] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] - [85] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] - [86] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] - [87] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] - [88] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] - [89] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] - [90] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@3 [ scroll_hard::i#1 ] + [60] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@3/(byte~) scroll_hard::i#3 ) [ scroll_hard::i#2 ] + [61] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] + [62] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] + [63] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] + [64] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] + [65] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] + [66] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] + [67] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] + [68] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] + [69] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] + [70] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] + [71] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] + [72] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] + [73] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] + [74] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] + [75] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] + [76] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] + [77] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] + [78] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@3 [ scroll_hard::i#1 ] to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 - [91] return [ ] + [79] return [ ] to:@return scroll_hard::@3: scope:[scroll_hard] from scroll_hard::@1 - [92] (byte~) scroll_hard::i#3 ← (byte) scroll_hard::i#1 [ scroll_hard::i#3 ] + [80] (byte~) scroll_hard::i#3 ← (byte) scroll_hard::i#1 [ scroll_hard::i#3 ] to:scroll_hard::@1 +next_char: scope:[next_char] from scroll_bit::@4 + [81] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] + [82] if((byte) next_char::c#0!=(byte) '@') goto next_char::@4 [ nxt#31 next_char::c#0 ] + to:next_char::@2 +next_char::@2: scope:[next_char] from next_char + [83] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] + [84] (byte~) next_char::c#4 ← (byte) next_char::c#1 [ next_char::c#4 ] + to:next_char::@1 +next_char::@1: scope:[next_char] from next_char::@2 next_char::@4 + [85] (byte) next_char::c#2 ← phi( next_char::@4/(byte~) next_char::c#3 next_char::@2/(byte~) next_char::c#4 ) [ next_char::c#2 nxt#18 ] + [85] (byte*) nxt#18 ← phi( next_char::@4/(byte*~) nxt#44 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] + [86] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] + to:next_char::@return +next_char::@return: scope:[next_char] from next_char::@1 + [87] return [ next_char::c#2 nxt#15 ] + to:@return +next_char::@4: scope:[next_char] from next_char + [88] (byte*~) nxt#44 ← (byte*) nxt#31 [ next_char::c#0 nxt#44 ] + [89] (byte~) next_char::c#3 ← (byte) next_char::c#0 [ nxt#44 next_char::c#3 ] + to:next_char::@1 fillscreen: scope:[fillscreen] from main - [93] phi() [ ] + [90] phi() [ ] to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@3 - [94] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@3/(byte*~) fillscreen::cursor#3 ) [ fillscreen::cursor#2 ] - [95] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] - [96] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] - [97] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@3 [ fillscreen::cursor#1 ] + [91] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@3/(byte*~) fillscreen::cursor#3 ) [ fillscreen::cursor#2 ] + [92] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] + [93] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] + [94] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@3 [ fillscreen::cursor#1 ] to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [98] return [ ] + [95] return [ ] to:@return fillscreen::@3: scope:[fillscreen] from fillscreen::@1 - [99] (byte*~) fillscreen::cursor#3 ← (byte*) fillscreen::cursor#1 [ fillscreen::cursor#3 ] + [96] (byte*~) fillscreen::cursor#3 ← (byte*) fillscreen::cursor#1 [ fillscreen::cursor#3 ] to:fillscreen::@1 Created 18 initial phi equivalence classes @@ -7174,36 +7096,35 @@ Coalesced [12] current_bit#33 ← current_bit#0 Coalesced [13] nxt#39 ← nxt#0 Coalesced [14] current_chargen#32 ← current_chargen#0 Coalesced [18] current_bit#35 ← current_bit#21 -Coalesced [19] nxt#41 ← nxt#37 -Coalesced [20] current_chargen#34 ← current_chargen#18 +Coalesced [19] nxt#41 ← nxt#36 +Coalesced [20] current_chargen#34 ← current_chargen#19 Coalesced [24] scroll#24 ← scroll#3 Coalesced (already) [25] current_bit#34 ← current_bit#29 Coalesced (already) [26] nxt#40 ← nxt#31 Coalesced (already) [27] current_chargen#33 ← current_chargen#27 -Coalesced [40] current_chargen#36 ← current_chargen#5 -Coalesced [41] nxt#43 ← nxt#15 -Coalesced [57] scroll_bit::r#5 ← scroll_bit::r#1 -Coalesced [58] scroll_bit::sc#5 ← scroll_bit::sc#1 -Coalesced (already) [59] current_chargen#35 ← current_chargen#27 -Coalesced [60] current_bit#36 ← current_bit#5 -Coalesced (already) [61] nxt#42 ← nxt#31 -Coalesced [65] next_char::c#4 ← next_char::c#1 -Coalesced [69] nxt#44 ← nxt#31 -Coalesced [70] next_char::c#3 ← next_char::c#0 -Coalesced [92] scroll_hard::i#3 ← scroll_hard::i#1 -Coalesced [99] fillscreen::cursor#3 ← fillscreen::cursor#1 +Coalesced [36] current_chargen#36 ← current_chargen#5 +Coalesced [37] nxt#43 ← nxt#15 +Coalesced [54] scroll_bit::r#5 ← scroll_bit::r#1 +Coalesced [55] scroll_bit::sc#5 ← scroll_bit::sc#1 +Coalesced (already) [56] current_chargen#35 ← current_chargen#27 +Coalesced [57] current_bit#36 ← current_bit#5 +Coalesced (already) [58] nxt#42 ← nxt#31 +Coalesced [80] scroll_hard::i#3 ← scroll_hard::i#1 +Coalesced [84] next_char::c#4 ← next_char::c#1 +Coalesced [88] nxt#44 ← nxt#31 +Coalesced [89] next_char::c#3 ← next_char::c#0 +Coalesced [96] fillscreen::cursor#3 ← fillscreen::cursor#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) main::@9 Culled Empty Block (label) scroll_soft::@4 Not culling empty block because it shares successor with its predecessor. (label) scroll_bit::@5 Culled Empty Block (label) scroll_bit::@10 Culled Empty Block (label) scroll_bit::@9 -Culled Empty Block (label) next_char::@4 Culled Empty Block (label) scroll_hard::@3 +Culled Empty Block (label) next_char::@4 Culled Empty Block (label) fillscreen::@3 -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::@7 scroll_bit::@4 scroll_bit::@8 scroll_bit::@1 scroll_bit::@2 scroll_bit::@5 scroll_bit::@3 scroll_bit::@6 scroll_bit::@return next_char next_char::@2 next_char::@1 next_char::@return scroll_hard scroll_hard::@1 scroll_hard::@return fillscreen fillscreen::@1 fillscreen::@return +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 Adding NOP phi() at start of main -Adding NOP phi() at start of scroll_bit Adding NOP phi() at start of scroll_hard Adding NOP phi() at start of fillscreen Propagating live ranges... @@ -7222,6 +7143,7 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... +Propagating live ranges... CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES @begin: scope:[] from to:@6 @@ -7259,11 +7181,11 @@ scroll_soft: scope:[scroll_soft] from main::@5 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft - [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] + [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] to:scroll_soft::@1 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] - [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] + [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] + [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [14] (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] @@ -7272,108 +7194,105 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [17] phi() [ current_bit#29 nxt#31 current_chargen#27 ] - [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] - [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] - [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] + [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] + [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] + [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] to:scroll_bit::@4 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 - [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] +scroll_bit::@4: scope:[scroll_bit] from scroll_bit + [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 - [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] - [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] - [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] - [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] - [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] - [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] + [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] + [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] + [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] + [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] to:scroll_bit::@1 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - [29] (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#37 current_chargen#18 ] - [29] (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#37 current_chargen#18 ] - [29] (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#37 current_chargen#18 ] +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + [25] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [25] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [25] (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#36 current_chargen#19 ] + [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] + [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] to:scroll_bit::@2 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - [32] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) SCREEN#0+(byte) 40+(byte) 39 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] - [32] (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) 0 scroll_bit::@3/(byte) scroll_bit::r#1 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] - [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] - [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] - [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + [29] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [29] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] + [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] + [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] + [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [36] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) '*' ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] - [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] - [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] - [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] - [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] + [33] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] + [34] *((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 ] + [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] + [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] + [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] to:scroll_bit::@6 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] + [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 - [43] return [ current_bit#21 nxt#37 current_chargen#18 ] + [40] return [ current_bit#21 nxt#36 current_chargen#19 ] to:@return -next_char: scope:[next_char] from scroll_bit::@4 - [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] - [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] - to:next_char::@2 -next_char::@2: scope:[next_char] from next_char - [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] - to:next_char::@1 -next_char::@1: scope:[next_char] from next_char next_char::@2 - [47] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] - [47] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] - [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] - to:next_char::@return -next_char::@return: scope:[next_char] from next_char::@1 - [49] return [ next_char::c#2 nxt#15 ] - to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit - [50] phi() [ ] +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 + [41] phi() [ ] to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - [51] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] - [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] - [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] - [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] - [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] - [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] - [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] - [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] - [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] - [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] - [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] - [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] - [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] - [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] - [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] - [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] - [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] - [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] - [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] + [42] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] + [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] + [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] + [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] + [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] + [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] + [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] + [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] + [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] + [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] + [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] + [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] + [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] + [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] + [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] + [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] + [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] + [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] + [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 - [70] return [ ] + [61] return [ ] + to:@return +next_char: scope:[next_char] from scroll_bit::@4 + [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] + [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] + to:next_char::@2 +next_char::@2: scope:[next_char] from next_char + [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] + to:next_char::@1 +next_char::@1: scope:[next_char] from next_char next_char::@2 + [65] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] + [65] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] + [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] + to:next_char::@return +next_char::@return: scope:[next_char] from next_char::@1 + [67] return [ next_char::c#2 nxt#15 ] to:@return fillscreen: scope:[fillscreen] from main - [71] phi() [ ] + [68] phi() [ ] to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 - [72] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] - [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] - [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] - [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] + [69] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] + [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] + [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] + [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [76] return [ ] + [73] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -7413,11 +7332,11 @@ scroll_soft: scope:[scroll_soft] from main::@5 [12] if((byte) scroll#3!=(byte) 255) goto scroll_soft::@1 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ( main:0::scroll_soft:7 [ current_bit#29 nxt#31 current_chargen#27 scroll#3 ] ) to:scroll_soft::@2 scroll_soft::@2: scope:[scroll_soft] from scroll_soft - [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_soft::@1 scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@2 - [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#18 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) - [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#37 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + [14] (byte*) current_chargen#0 ← phi( scroll_soft/(byte*) current_chargen#27 scroll_soft::@2/(byte*) current_chargen#19 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + [14] (byte*) nxt#0 ← phi( scroll_soft/(byte*) nxt#31 scroll_soft::@2/(byte*) nxt#36 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte) current_bit#0 ← phi( scroll_soft/(byte) current_bit#29 scroll_soft::@2/(byte) current_bit#21 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [14] (byte) scroll#0 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@2/(byte) 7 ) [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) @@ -7426,108 +7345,105 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) to:@return scroll_bit: scope:[scroll_bit] from scroll_soft::@2 - [17] phi() [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - to:scroll_bit::@7 -scroll_bit::@7: scope:[scroll_bit] from scroll_bit - [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) - [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) - [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) + [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) + [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) + [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) to:scroll_bit::@4 -scroll_bit::@4: scope:[scroll_bit] from scroll_bit::@7 - [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) +scroll_bit::@4: scope:[scroll_bit] from scroll_bit + [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) to:scroll_bit::@8 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 - [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) - [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) - [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) - [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) - [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) - [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) + [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) + [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) + [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) to:scroll_bit::@1 -scroll_bit::@1: scope:[scroll_bit] from scroll_bit::@7 scroll_bit::@8 - [29] (byte*) nxt#37 ← phi( scroll_bit::@7/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) - [29] (byte) current_bit#21 ← phi( scroll_bit::@7/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) - [29] (byte*) current_chargen#18 ← phi( scroll_bit::@7/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) +scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 + [25] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [25] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [25] (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + to:scroll_bit::@7 +scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 asm { sei } - [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_bit::@2 -scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@3 - [32] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@1/(const byte*) SCREEN#0+(byte) 40+(byte) 39 scroll_bit::@3/(byte*) scroll_bit::sc#1 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [32] (byte) scroll_bit::r#2 ← phi( scroll_bit::@1/(byte) 0 scroll_bit::@3/(byte) scroll_bit::r#1 ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) - [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) - [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) +scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 + [29] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte) 40+(byte) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [29] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) + [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) + [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) to:scroll_bit::@5 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 to:scroll_bit::@3 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 - [36] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) '*' ) [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) - [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) - [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) - [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) - [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) + [33] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) + [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) + [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) + [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) + [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) to:scroll_bit::@6 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 - [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) asm { cli } to:scroll_bit::@return scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 - [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:@return -next_char: scope:[next_char] from scroll_bit::@4 - [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) - [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) - to:next_char::@2 -next_char::@2: scope:[next_char] from next_char - [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) - to:next_char::@1 -next_char::@1: scope:[next_char] from next_char next_char::@2 - [47] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#18 ] ) - [47] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#18 ] ) - [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - to:next_char::@return -next_char::@return: scope:[next_char] from next_char::@1 - [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - to:@return -scroll_hard: scope:[scroll_hard] from scroll_bit - [50] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) +scroll_hard: scope:[scroll_hard] from scroll_bit::@1 + [41] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) to:scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 - [51] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) - [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) - [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) - [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) - [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) - [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) - [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) - [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) - [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) - [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) - [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) + [42] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) + [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) + [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) + [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) + [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) + [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) + [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) + [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) + [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) + [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) + [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) to:scroll_hard::@return scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 - [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) + to:@return +next_char: scope:[next_char] from scroll_bit::@4 + [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) + [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) + to:next_char::@2 +next_char::@2: scope:[next_char] from next_char + [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) + to:next_char::@1 +next_char::@1: scope:[next_char] from next_char next_char::@2 + [65] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [65] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) + [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + to:next_char::@return +next_char::@return: scope:[next_char] from next_char::@1 + [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) to:@return fillscreen: scope:[fillscreen] from main - [71] phi() [ ] ( main:0::fillscreen:2 [ ] ) + [68] phi() [ ] ( main:0::fillscreen:2 [ ] ) to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 - [72] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) - [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) - [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) - [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [69] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) + [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) + [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) + [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [76] return [ ] ( main:0::fillscreen:2 [ ] ) + [73] return [ ] ( main:0::fillscreen:2 [ ] ) to:@return DOMINATORS @@ -7545,22 +7461,22 @@ scroll_soft::@2 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 s scroll_soft::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@1 main scroll_soft::@return dominated by @6 @begin scroll_soft main::@2 scroll_soft::@return main::@3 main::@5 scroll_soft::@1 main scroll_bit dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit main -scroll_bit::@7 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit main scroll_bit::@7 -scroll_bit::@4 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main scroll_bit::@7 -scroll_bit::@8 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main scroll_bit::@8 scroll_bit::@7 -scroll_bit::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 main scroll_bit::@7 +scroll_bit::@4 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main +scroll_bit::@8 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main scroll_bit::@8 +scroll_bit::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 main +scroll_bit::@7 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 main scroll_bit::@7 scroll_bit::@2 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 scroll_bit::@2 main scroll_bit::@7 scroll_bit::@5 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 scroll_bit::@5 scroll_bit::@3 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@3 scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 scroll_bit::@6 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@3 scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 scroll_bit::@6 scroll_bit::@return dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@3 scroll_bit::@1 main scroll_bit::@2 scroll_bit::@7 scroll_bit::@6 scroll_bit::@return -next_char dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main scroll_bit::@7 next_char -next_char::@2 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@2 scroll_bit::@4 main scroll_bit::@7 next_char -next_char::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@1 scroll_bit::@4 main scroll_bit::@7 next_char -next_char::@return dominated by next_char::@return @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@1 scroll_bit::@4 main scroll_bit::@7 next_char -scroll_hard dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard main -scroll_hard::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_hard::@1 main -scroll_hard::@return dominated by @6 @begin scroll_soft main::@2 scroll_hard::@return main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_hard::@1 main +scroll_hard dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_bit::@1 main +scroll_hard::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_hard::@1 scroll_bit::@1 main +scroll_hard::@return dominated by @6 @begin scroll_soft main::@2 scroll_hard::@return main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_hard scroll_hard::@1 scroll_bit::@1 main +next_char dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit scroll_bit::@4 main next_char +next_char::@2 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@2 scroll_bit::@4 main next_char +next_char::@1 dominated by @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@1 scroll_bit::@4 main next_char +next_char::@return dominated by next_char::@return @6 @begin scroll_soft main::@2 main::@3 main::@5 scroll_soft::@2 scroll_bit next_char::@1 scroll_bit::@4 main next_char fillscreen dominated by @6 @begin fillscreen main fillscreen::@1 dominated by @6 @begin fillscreen fillscreen::@1 main fillscreen::@return dominated by @6 @begin fillscreen::@return fillscreen fillscreen::@1 main @@ -7595,9 +7511,9 @@ Found 1 loops in scope [fillscreen] Found 0 loops in scope [scroll_soft] Found 1 loops in scope [scroll_bit] Loop head: scroll_bit::@2 tails: scroll_bit::@3 blocks: scroll_bit::@3 scroll_bit::@2 scroll_bit::@5 +Found 0 loops in scope [next_char] Found 1 loops in scope [scroll_hard] Loop head: scroll_hard::@1 tails: scroll_hard::@1 blocks: scroll_hard::@1 -Found 0 loops in scope [next_char] NATURAL LOOPS WITH DEPTH Loop head: main::@2 tails: main::@2 blocks: main::@2 depth: 2 Loop head: main::@3 tails: main::@3 blocks: main::@3 depth: 2 @@ -7617,13 +7533,13 @@ VARIABLE REGISTER WEIGHTS (byte*) TEXT (byte) current_bit (byte) current_bit#0 2.5 -(byte) current_bit#21 0.9375 -(byte) current_bit#29 1.875 +(byte) current_bit#21 0.8823529411764706 +(byte) current_bit#29 2.5 (byte) current_bit#5 3.0 (byte*) current_chargen (byte*) current_chargen#0 2.5 -(byte*) current_chargen#18 1.0625 -(byte*) current_chargen#27 1.3636363636363638 +(byte*) current_chargen#19 1.0 +(byte*) current_chargen#27 1.666666666666667 (byte*) current_chargen#5 4.0 (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (byte*) fillscreen::cursor @@ -7640,27 +7556,25 @@ VARIABLE REGISTER WEIGHTS (byte) next_char::return (byte*) nxt (byte*) nxt#0 2.5 -(byte*) nxt#15 0.4444444444444444 +(byte*) nxt#15 0.5714285714285714 (byte*) nxt#18 4.0 -(byte*) nxt#31 1.3076923076923075 -(byte*) nxt#37 0.375 +(byte*) nxt#31 1.5454545454545456 +(byte*) nxt#36 0.3529411764705882 (byte) scroll (byte) scroll#0 2.5 (byte) scroll#18 3.25 (byte) scroll#3 3.0 (void()) scroll_bit() -(byte~) scroll_bit::$1 4.0 -(byte~) scroll_bit::$12 22.0 -(byte*~) scroll_bit::$8 4.0 +(byte~) scroll_bit::$0 4.0 +(byte~) scroll_bit::$10 22.0 +(word~) scroll_bit::$4 4.0 +(byte*~) scroll_bit::$5 4.0 (byte) scroll_bit::b (byte) scroll_bit::b#2 11.0 (byte) scroll_bit::bits (byte) scroll_bit::bits#0 22.0 (word) scroll_bit::c (word) scroll_bit::c#0 4.0 -(word) scroll_bit::c#1 4.0 -(word) scroll_bit::c#2 4.0 -(word) scroll_bit::c#3 4.0 (byte) scroll_bit::r (byte) scroll_bit::r#1 16.5 (byte) scroll_bit::r#2 4.714285714285714 @@ -7692,22 +7606,20 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ scroll#18 scroll#0 scroll#3 ] [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] -[ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 ] +[ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] [ scroll_bit::r#2 scroll_bit::r#1 ] [ scroll_bit::sc#2 scroll_bit::sc#1 ] [ scroll_bit::b#2 ] -[ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ] -[ next_char::c#2 next_char::c#0 next_char::c#1 ] [ scroll_hard::i#2 scroll_hard::i#1 ] +[ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] +[ next_char::c#2 next_char::c#0 next_char::c#1 ] [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Added variable scroll_bit::$1 to zero page equivalence class [ scroll_bit::$1 ] +Added variable scroll_bit::$0 to zero page equivalence class [ scroll_bit::$0 ] Added variable scroll_bit::c#0 to zero page equivalence class [ scroll_bit::c#0 ] -Added variable scroll_bit::c#1 to zero page equivalence class [ scroll_bit::c#1 ] -Added variable scroll_bit::c#2 to zero page equivalence class [ scroll_bit::c#2 ] -Added variable scroll_bit::c#3 to zero page equivalence class [ scroll_bit::c#3 ] -Added variable scroll_bit::$8 to zero page equivalence class [ scroll_bit::$8 ] +Added variable scroll_bit::$4 to zero page equivalence class [ scroll_bit::$4 ] +Added variable scroll_bit::$5 to zero page equivalence class [ scroll_bit::$5 ] Added variable scroll_bit::bits#0 to zero page equivalence class [ scroll_bit::bits#0 ] -Added variable scroll_bit::$12 to zero page equivalence class [ scroll_bit::$12 ] +Added variable scroll_bit::$10 to zero page equivalence class [ scroll_bit::$10 ] Added variable scroll_hard::$17 to zero page equivalence class [ scroll_hard::$17 ] Added variable scroll_hard::$19 to zero page equivalence class [ scroll_hard::$19 ] Added variable scroll_hard::$21 to zero page equivalence class [ scroll_hard::$21 ] @@ -7719,22 +7631,20 @@ Added variable scroll_hard::$31 to zero page equivalence class [ scroll_hard::$3 Complete equivalence classes [ scroll#18 scroll#0 scroll#3 ] [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] -[ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 ] +[ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] [ scroll_bit::r#2 scroll_bit::r#1 ] [ scroll_bit::sc#2 scroll_bit::sc#1 ] [ scroll_bit::b#2 ] -[ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ] -[ next_char::c#2 next_char::c#0 next_char::c#1 ] [ scroll_hard::i#2 scroll_hard::i#1 ] +[ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] +[ next_char::c#2 next_char::c#0 next_char::c#1 ] [ fillscreen::cursor#2 fillscreen::cursor#1 ] -[ scroll_bit::$1 ] +[ scroll_bit::$0 ] [ scroll_bit::c#0 ] -[ scroll_bit::c#1 ] -[ scroll_bit::c#2 ] -[ scroll_bit::c#3 ] -[ scroll_bit::$8 ] +[ scroll_bit::$4 ] +[ scroll_bit::$5 ] [ scroll_bit::bits#0 ] -[ scroll_bit::$12 ] +[ scroll_bit::$10 ] [ scroll_hard::$17 ] [ scroll_hard::$19 ] [ scroll_hard::$21 ] @@ -7745,30 +7655,28 @@ Complete equivalence classes [ scroll_hard::$31 ] Allocated zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] Allocated zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] -Allocated zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 ] +Allocated zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] Allocated zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] Allocated zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] Allocated zp ZP_BYTE:9 [ scroll_bit::b#2 ] -Allocated zp ZP_PTR_BYTE:10 [ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ] -Allocated zp ZP_BYTE:12 [ next_char::c#2 next_char::c#0 next_char::c#1 ] -Allocated zp ZP_BYTE:13 [ scroll_hard::i#2 scroll_hard::i#1 ] +Allocated zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] +Allocated zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] +Allocated zp ZP_BYTE:13 [ next_char::c#2 next_char::c#0 next_char::c#1 ] Allocated zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Allocated zp ZP_BYTE:16 [ scroll_bit::$1 ] +Allocated zp ZP_BYTE:16 [ scroll_bit::$0 ] Allocated zp ZP_WORD:17 [ scroll_bit::c#0 ] -Allocated zp ZP_WORD:19 [ scroll_bit::c#1 ] -Allocated zp ZP_WORD:21 [ scroll_bit::c#2 ] -Allocated zp ZP_WORD:23 [ scroll_bit::c#3 ] -Allocated zp ZP_PTR_BYTE:25 [ scroll_bit::$8 ] -Allocated zp ZP_BYTE:27 [ scroll_bit::bits#0 ] -Allocated zp ZP_BYTE:28 [ scroll_bit::$12 ] -Allocated zp ZP_BYTE:29 [ scroll_hard::$17 ] -Allocated zp ZP_BYTE:30 [ scroll_hard::$19 ] -Allocated zp ZP_BYTE:31 [ scroll_hard::$21 ] -Allocated zp ZP_BYTE:32 [ scroll_hard::$23 ] -Allocated zp ZP_BYTE:33 [ scroll_hard::$25 ] -Allocated zp ZP_BYTE:34 [ scroll_hard::$27 ] -Allocated zp ZP_BYTE:35 [ scroll_hard::$29 ] -Allocated zp ZP_BYTE:36 [ scroll_hard::$31 ] +Allocated zp ZP_WORD:19 [ scroll_bit::$4 ] +Allocated zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] +Allocated zp ZP_BYTE:23 [ scroll_bit::bits#0 ] +Allocated zp ZP_BYTE:24 [ scroll_bit::$10 ] +Allocated zp ZP_BYTE:25 [ scroll_hard::$17 ] +Allocated zp ZP_BYTE:26 [ scroll_hard::$19 ] +Allocated zp ZP_BYTE:27 [ scroll_hard::$21 ] +Allocated zp ZP_BYTE:28 [ scroll_hard::$23 ] +Allocated zp ZP_BYTE:29 [ scroll_hard::$25 ] +Allocated zp ZP_BYTE:30 [ scroll_hard::$27 ] +Allocated zp ZP_BYTE:31 [ scroll_hard::$29 ] +Allocated zp ZP_BYTE:32 [ scroll_hard::$31 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -7783,7 +7691,7 @@ INITIAL ASM .const SCROLL = $d016 .label scroll = 2 .label current_bit = 3 - .label nxt = $a + .label nxt = $b .label current_chargen = 4 TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" //SEG2 @begin @@ -7801,7 +7709,7 @@ bend: //SEG7 main main: { //SEG8 [2] call fillscreen param-assignment [ ] ( main:0 [ ] ) - //SEG9 [71] phi from main to fillscreen [phi:main->fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -7877,186 +7785,180 @@ scroll_soft: { jmp b2 //SEG36 scroll_soft::@2 b2: - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] - scroll_bit_from_b2: + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] b1_from_b2: - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- zpby1=coby1 + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- zpby1=coby1 lda #7 sta scroll jmp b1 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] b1_from_scroll_soft: - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy jmp b1 - //SEG49 scroll_soft::@1 + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=zpby1 + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=zpby1 lda scroll sta SCROLL jmp breturn - //SEG51 scroll_soft::@return + //SEG50 scroll_soft::@return breturn: - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _1 = $10 - .label _8 = $19 - .label _12 = $1c + .label _0 = $10 + .label _4 = $13 + .label _5 = $15 + .label _10 = $18 .label c = $11 - .label c_1 = $13 - .label c_2 = $15 - .label c_3 = $17 - .label bits = $1b + .label bits = $17 .label sc = 7 .label r = 6 .label b = 9 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - scroll_hard_from_scroll_bit: - jsr scroll_hard - jmp b7 - //SEG56 scroll_bit::@7 - b7: - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- zpby1=zpby2_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- zpby1=zpby2_ror_1 lda current_bit lsr - sta _1 - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=zpby2 - lda _1 + sta _0 + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=zpby2 + lda _0 sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 lda current_bit - bne b1_from_b7 + bne b1_from_scroll_bit jmp b4 - //SEG60 scroll_bit::@4 + //SEG56 scroll_bit::@4 b4: - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char jmp b8 - //SEG62 scroll_bit::@8 + //SEG58 scroll_bit::@8 b8: - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=zpby1 + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=zpby1 lda next_char.c sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo2_rol_1 - lda c_1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo2_rol_3 + lda _4 asl sta c - lda c_1+1 + lda _4+1 rol sta c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo2_rol_1 - lda c_2 + lda _4 asl - sta c_1 - lda c_2+1 + sta c + lda _4+1 rol - sta c_1+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo2_rol_1 - lda c_3 + sta c+1 + lda _4 asl - sta c_2 - lda c_3+1 + sta c + lda _4+1 rol - sta c_2+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + sta c+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c_3+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) -- zpptrby1=zpptrby2 - lda _8 + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) -- zpptrby1=zpptrby2 + lda _5 sta current_chargen - lda _8+1 + lda _5+1 sta current_chargen+1 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - b1_from_b7: - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + b1_from_scroll_bit: + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG77 scroll_bit::@1 + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + scroll_hard_from_b1: + jsr scroll_hard + jmp b7 + //SEG74 scroll_bit::@7 + b7: + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - b2_from_b1: - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + b2_from_b7: + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- zpby1=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- zpby1=coby1 lda #0 sta r jmp b2 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy jmp b2 - //SEG86 scroll_bit::@2 + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- zpby1=zpptrby1_derefidx_zpby2 + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- zpby1=zpptrby1_derefidx_zpby2 ldy r lda (current_chargen),y sta bits - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- zpby1=zpby2_band_zpby3 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- zpby1=zpby2_band_zpby3 lda bits and current_bit - sta _12 - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- zpby1_eq_0_then_la1 - lda _12 + sta _10 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- zpby1_eq_0_then_la1 + lda _10 beq b3_from_b2 jmp b5 - //SEG90 scroll_bit::@5 + //SEG87 scroll_bit::@5 b5: - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- zpby1=coby1 - lda #'*' + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- zpby1=coby1 + lda #$80+' ' sta b jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- zpby1=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- zpby1=coby1 lda #' ' sta b jmp b3 - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=zpby1 + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=zpby1 ldy #0 lda b sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -8064,71 +7966,27 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- zpby1=_inc_zpby1 + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- zpby1=_inc_zpby1 inc r - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- zpby1_neq_coby1_then_la1 lda r cmp #8 bne b2_from_b3 jmp b6 - //SEG100 scroll_bit::@6 + //SEG97 scroll_bit::@6 b6: - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli jmp breturn - //SEG103 scroll_bit::@return + //SEG100 scroll_bit::@return breturn: - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - .label c = $c - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- zpby1=_deref_zpptrby1 - ldy #0 - lda (nxt),y - sta c - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- zpby1_neq_coby1_then_la1 - lda c - cmp #'@' - bne b1_from_next_char - jmp b2 - //SEG108 next_char::@2 - b2: - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- zpby1=_deref_cowo1 - lda TEXT - sta c - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - b1_from_b2: - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - jmp b1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - b1_from_next_char: - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - jmp b1 - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - jmp breturn - //SEG118 next_char::@return - breturn: - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -8138,131 +7996,175 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - .label _17 = $1d - .label _19 = $1e - .label _21 = $1f - .label _23 = $20 - .label _25 = $21 - .label _27 = $22 - .label _29 = $23 - .label _31 = $24 - .label i = $d - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + .label _17 = $19 + .label _19 = $1a + .label _21 = $1b + .label _23 = $1c + .label _25 = $1d + .label _27 = $1e + .label _29 = $1f + .label _31 = $20 + .label i = $a + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- zpby1=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy jmp b1 - //SEG125 scroll_hard::@1 + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line0+1,x sta _17 - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _17 ldx i sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line1+1,x sta _19 - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _19 ldx i sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line2+1,x sta _21 - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _21 ldx i sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line3+1,x sta _23 - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _23 ldx i sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line4+1,x sta _25 - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _25 ldx i sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line5+1,x sta _27 - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _27 ldx i sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line6+1,x sta _29 - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _29 ldx i sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- zpby1=cowo1_derefidx_zpby2 + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- zpby1=cowo1_derefidx_zpby2 ldx i lda line7+1,x sta _31 - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_zpby1=zpby2 lda _31 ldx i sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- zpby1=_inc_zpby1 + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- zpby1=_inc_zpby1 inc i - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- zpby1_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- zpby1_neq_coby1_then_la1 lda i cmp #$27 bne b1_from_b1 jmp breturn - //SEG144 scroll_hard::@return + //SEG126 scroll_hard::@return breturn: - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + .label c = $d + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- zpby1=_deref_zpptrby1 + ldy #0 + lda (nxt),y + sta c + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- zpby1_neq_coby1_then_la1 + lda c + cmp #'@' + bne b1_from_next_char + jmp b2 + //SEG131 next_char::@2 + b2: + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- zpby1=_deref_cowo1 + lda TEXT + sta c + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + b1_from_b2: + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + jmp b1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + b1_from_next_char: + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + jmp b1 + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + jmp breturn + //SEG141 next_char::@return + breturn: + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = $e - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG151 fillscreen::@1 + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8272,9 +8174,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG155 fillscreen::@return + //SEG152 fillscreen::@return breturn: - //SEG156 [76] return [ ] ( main:0::fillscreen:2 [ ] ) + //SEG153 [73] return [ ] ( main:0::fillscreen:2 [ ] ) rts } @@ -8283,102 +8185,94 @@ Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#1 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) always clobbers reg byte a -Statement [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) always clobbers reg byte a -Statement [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) always clobbers reg byte a -Statement [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) always clobbers reg byte a -Statement [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) always clobbers reg byte a -Statement [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) always clobbers reg byte a -Statement [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) always clobbers reg byte a -Statement [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a +Statement [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) always clobbers reg byte a +Statement [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) always clobbers reg byte a +Statement [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) always clobbers reg byte a +Statement [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) always clobbers reg byte a +Statement [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] -Statement [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) always clobbers reg byte a -Statement [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y +Statement [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) always clobbers reg byte a +Statement [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] -Statement [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a -Statement [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) always clobbers reg byte a -Statement [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a +Statement [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y +Statement [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Statement [4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a Statement [5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:0 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a -Statement [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) always clobbers reg byte a -Statement [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) always clobbers reg byte a -Statement [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) always clobbers reg byte a -Statement [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) always clobbers reg byte a -Statement [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) always clobbers reg byte a -Statement [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) always clobbers reg byte a -Statement [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) always clobbers reg byte a -Statement [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) always clobbers reg byte a -Statement [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y -Statement [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a -Statement [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) always clobbers reg byte a -Statement [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y -Statement [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) always clobbers reg byte a +Statement [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) always clobbers reg byte a +Statement [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) always clobbers reg byte a +Statement [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) always clobbers reg byte a +Statement [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) always clobbers reg byte a +Statement [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y +Statement [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a +Statement [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a +Statement [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y +Statement [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] : zp ZP_BYTE:3 , reg byte x , -Potential registers zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 ] : zp ZP_PTR_BYTE:4 , +Potential registers zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] : zp ZP_PTR_BYTE:4 , Potential registers zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] : zp ZP_BYTE:6 , reg byte x , Potential registers zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] : zp ZP_PTR_BYTE:7 , Potential registers zp ZP_BYTE:9 [ scroll_bit::b#2 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_PTR_BYTE:10 [ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ] : zp ZP_PTR_BYTE:10 , -Potential registers zp ZP_BYTE:12 [ next_char::c#2 next_char::c#0 next_char::c#1 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:13 [ scroll_hard::i#2 scroll_hard::i#1 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] : zp ZP_PTR_BYTE:11 , +Potential registers zp ZP_BYTE:13 [ next_char::c#2 next_char::c#0 next_char::c#1 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] : zp ZP_PTR_BYTE:14 , -Potential registers zp ZP_BYTE:16 [ scroll_bit::$1 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ scroll_bit::$0 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:17 [ scroll_bit::c#0 ] : zp ZP_WORD:17 , -Potential registers zp ZP_WORD:19 [ scroll_bit::c#1 ] : zp ZP_WORD:19 , -Potential registers zp ZP_WORD:21 [ scroll_bit::c#2 ] : zp ZP_WORD:21 , -Potential registers zp ZP_WORD:23 [ scroll_bit::c#3 ] : zp ZP_WORD:23 , -Potential registers zp ZP_PTR_BYTE:25 [ scroll_bit::$8 ] : zp ZP_PTR_BYTE:25 , -Potential registers zp ZP_BYTE:27 [ scroll_bit::bits#0 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:28 [ scroll_bit::$12 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ scroll_hard::$17 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ scroll_hard::$19 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ scroll_hard::$21 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ scroll_hard::$23 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ scroll_hard::$25 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ scroll_hard::$27 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ scroll_hard::$29 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:36 [ scroll_hard::$31 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:19 [ scroll_bit::$4 ] : zp ZP_WORD:19 , +Potential registers zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] : zp ZP_PTR_BYTE:21 , +Potential registers zp ZP_BYTE:23 [ scroll_bit::bits#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ scroll_bit::$10 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ scroll_hard::$17 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ scroll_hard::$19 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ scroll_hard::$21 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:28 [ scroll_hard::$23 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ scroll_hard::$25 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ scroll_hard::$27 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ scroll_hard::$29 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ scroll_hard::$31 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [scroll_hard] 28.15: zp ZP_BYTE:13 [ scroll_hard::i#2 scroll_hard::i#1 ] 22: zp ZP_BYTE:29 [ scroll_hard::$17 ] 22: zp ZP_BYTE:30 [ scroll_hard::$19 ] 22: zp ZP_BYTE:31 [ scroll_hard::$21 ] 22: zp ZP_BYTE:32 [ scroll_hard::$23 ] 22: zp ZP_BYTE:33 [ scroll_hard::$25 ] 22: zp ZP_BYTE:34 [ scroll_hard::$27 ] 22: zp ZP_BYTE:35 [ scroll_hard::$29 ] 22: zp ZP_BYTE:36 [ scroll_hard::$31 ] -Uplift Scope [scroll_bit] 22: zp ZP_BYTE:27 [ scroll_bit::bits#0 ] 22: zp ZP_BYTE:28 [ scroll_bit::$12 ] 21.21: zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 12.83: zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 11: zp ZP_BYTE:9 [ scroll_bit::b#2 ] 4: zp ZP_BYTE:16 [ scroll_bit::$1 ] 4: zp ZP_WORD:17 [ scroll_bit::c#0 ] 4: zp ZP_WORD:19 [ scroll_bit::c#1 ] 4: zp ZP_WORD:21 [ scroll_bit::c#2 ] 4: zp ZP_WORD:23 [ scroll_bit::c#3 ] 4: zp ZP_PTR_BYTE:25 [ scroll_bit::$8 ] -Uplift Scope [] 8.93: zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 ] 8.75: zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] 8.63: zp ZP_PTR_BYTE:10 [ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ] 8.31: zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] +Uplift Scope [scroll_hard] 28.15: zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] 22: zp ZP_BYTE:25 [ scroll_hard::$17 ] 22: zp ZP_BYTE:26 [ scroll_hard::$19 ] 22: zp ZP_BYTE:27 [ scroll_hard::$21 ] 22: zp ZP_BYTE:28 [ scroll_hard::$23 ] 22: zp ZP_BYTE:29 [ scroll_hard::$25 ] 22: zp ZP_BYTE:30 [ scroll_hard::$27 ] 22: zp ZP_BYTE:31 [ scroll_hard::$29 ] 22: zp ZP_BYTE:32 [ scroll_hard::$31 ] +Uplift Scope [scroll_bit] 22: zp ZP_BYTE:23 [ scroll_bit::bits#0 ] 22: zp ZP_BYTE:24 [ scroll_bit::$10 ] 21.21: zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 12.83: zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 11: zp ZP_BYTE:9 [ scroll_bit::b#2 ] 4: zp ZP_BYTE:16 [ scroll_bit::$0 ] 4: zp ZP_WORD:17 [ scroll_bit::c#0 ] 4: zp ZP_WORD:19 [ scroll_bit::$4 ] 4: zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] +Uplift Scope [] 9.17: zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] 8.97: zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] 8.88: zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] 8.75: zp ZP_BYTE:2 [ scroll#18 scroll#0 scroll#3 ] Uplift Scope [fillscreen] 33: zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplift Scope [next_char] 8.5: zp ZP_BYTE:12 [ next_char::c#2 next_char::c#0 next_char::c#1 ] +Uplift Scope [next_char] 8.5: zp ZP_BYTE:13 [ next_char::c#2 next_char::c#0 next_char::c#1 ] Uplift Scope [main] Uplift Scope [scroll_soft] Uplift attempts [scroll_hard] 10000/262144 (limiting to 10000) -Uplifting [scroll_hard] best 9555 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] reg byte a [ scroll_hard::$17 ] reg byte a [ scroll_hard::$19 ] reg byte a [ scroll_hard::$21 ] reg byte a [ scroll_hard::$23 ] reg byte a [ scroll_hard::$25 ] reg byte a [ scroll_hard::$27 ] zp ZP_BYTE:35 [ scroll_hard::$29 ] zp ZP_BYTE:36 [ scroll_hard::$31 ] +Uplifting [scroll_hard] best 9555 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] reg byte a [ scroll_hard::$17 ] reg byte a [ scroll_hard::$19 ] reg byte a [ scroll_hard::$21 ] reg byte a [ scroll_hard::$23 ] reg byte a [ scroll_hard::$25 ] reg byte a [ scroll_hard::$27 ] zp ZP_BYTE:31 [ scroll_hard::$29 ] zp ZP_BYTE:32 [ scroll_hard::$31 ] Limited combination testing to 10000 combinations of 262144 possible. -Uplifting [scroll_bit] best 9299 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$12 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$1 ] zp ZP_WORD:17 [ scroll_bit::c#0 ] zp ZP_WORD:19 [ scroll_bit::c#1 ] zp ZP_WORD:21 [ scroll_bit::c#2 ] zp ZP_WORD:23 [ scroll_bit::c#3 ] zp ZP_PTR_BYTE:25 [ scroll_bit::$8 ] -Uplifting [] best 8987 combination zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 ] reg byte x [ scroll#18 scroll#0 scroll#3 ] zp ZP_PTR_BYTE:10 [ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] +Uplifting [scroll_bit] best 9299 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$10 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_PTR_BYTE:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$0 ] zp ZP_WORD:17 [ scroll_bit::c#0 ] zp ZP_WORD:19 [ scroll_bit::$4 ] zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] +Uplifting [] best 8987 combination zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] zp ZP_PTR_BYTE:11 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] reg byte x [ scroll#18 scroll#0 scroll#3 ] Uplifting [fillscreen] best 8987 combination zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplifting [next_char] best 8975 combination reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ] Uplifting [main] best 8975 combination Uplifting [scroll_soft] best 8975 combination -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ scroll_hard::$29 ] +Attempting to uplift remaining variables inzp ZP_BYTE:31 [ scroll_hard::$29 ] Uplifting [scroll_hard] best 8915 combination reg byte a [ scroll_hard::$29 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ scroll_hard::$31 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ scroll_hard::$31 ] Uplifting [scroll_hard] best 8855 combination reg byte a [ scroll_hard::$31 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] Uplifting [] best 8855 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] -Coalescing zero page register [ zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 ] ] with [ zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] -Coalescing zero page register [ zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ] ] with [ zp ZP_PTR_BYTE:25 [ scroll_bit::$8 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ scroll_bit::c#0 ] ] with [ zp ZP_WORD:19 [ scroll_bit::c#1 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ scroll_bit::c#0 scroll_bit::c#1 ] ] with [ zp ZP_WORD:21 [ scroll_bit::c#2 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ scroll_bit::c#0 scroll_bit::c#1 scroll_bit::c#2 ] ] with [ zp ZP_WORD:23 [ scroll_bit::c#3 ] ] +Coalescing zero page register [ zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 ] ] with [ zp ZP_PTR_BYTE:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] +Coalescing zero page register [ zp ZP_PTR_BYTE:4 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ] ] with [ zp ZP_PTR_BYTE:21 [ scroll_bit::$5 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ scroll_bit::c#0 ] ] with [ zp ZP_WORD:19 [ scroll_bit::$4 ] ] Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ] -Allocated (was zp ZP_PTR_BYTE:4) zp ZP_PTR_BYTE:3 [ current_chargen#27 current_chargen#0 current_chargen#18 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::$8 ] +Allocated (was zp ZP_PTR_BYTE:4) zp ZP_PTR_BYTE:3 [ current_chargen#27 current_chargen#0 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::$5 ] Allocated (was zp ZP_PTR_BYTE:7) zp ZP_PTR_BYTE:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ] -Allocated (was zp ZP_PTR_BYTE:10) zp ZP_PTR_BYTE:7 [ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ] -Allocated (was zp ZP_WORD:17) zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::c#1 scroll_bit::c#2 scroll_bit::c#3 ] +Allocated (was zp ZP_PTR_BYTE:11) zp ZP_PTR_BYTE:7 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] +Allocated (was zp ZP_WORD:17) zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ] Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp b2 @@ -8389,18 +8283,18 @@ Removing instruction jmp breturn Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b7 Removing instruction jmp b4 Removing instruction jmp b8 Removing instruction jmp b1 +Removing instruction jmp b7 Removing instruction jmp b2 Removing instruction jmp b5 Removing instruction jmp b3 Removing instruction jmp b6 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp breturn +Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 @@ -8435,7 +8329,7 @@ bend: //SEG7 main main: { //SEG8 [2] call fillscreen param-assignment [ ] ( main:0 [ ] ) - //SEG9 [71] phi from main to fillscreen [phi:main->fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -8503,143 +8397,140 @@ scroll_soft: { bne b1_from_scroll_soft //SEG36 scroll_soft::@2 b2: - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] - scroll_bit_from_b2: + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] b1_from_b2: - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] b1_from_scroll_soft: - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return + //SEG50 scroll_soft::@return breturn: - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - scroll_hard_from_scroll_bit: - jsr scroll_hard - //SEG56 scroll_bit::@7 - b7: - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 lda current_bit - bne b1_from_b7 - //SEG60 scroll_bit::@4 + bne b1_from_scroll_bit + //SEG56 scroll_bit::@4 b4: - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 + //SEG58 scroll_bit::@8 b8: - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - b1_from_b7: - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + b1_from_scroll_bit: + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + scroll_hard_from_b1: + jsr scroll_hard + //SEG74 scroll_bit::@7 + b7: + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - b2_from_b1: - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + b2_from_b7: + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 + //SEG87 scroll_bit::@5 b5: - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -8647,61 +8538,24 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2_from_b3 - //SEG100 scroll_bit::@6 + //SEG97 scroll_bit::@6 b6: - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return + //SEG100 scroll_bit::@return breturn: - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1_from_next_char - //SEG108 next_char::@2 - b2: - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - b1_from_b2: - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - jmp b1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - b1_from_next_char: - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - breturn: - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -8711,85 +8565,122 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1_from_b1 - //SEG144 scroll_hard::@return + //SEG126 scroll_hard::@return breturn: - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1_from_next_char + //SEG131 next_char::@2 + b2: + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + b1_from_b2: + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + jmp b1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + b1_from_next_char: + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + breturn: + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8798,9 +8689,9 @@ fillscreen: { cmp #fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -8903,142 +8794,139 @@ scroll_soft: { bne b1_from_scroll_soft //SEG36 scroll_soft::@2 b2: - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] - scroll_bit_from_b2: + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] b1_from_b2: - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] b1_from_scroll_soft: - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return + //SEG50 scroll_soft::@return breturn: - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - scroll_hard_from_scroll_bit: - jsr scroll_hard - //SEG56 scroll_bit::@7 - b7: - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 - bne b1_from_b7 - //SEG60 scroll_bit::@4 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + bne b1_from_scroll_bit + //SEG56 scroll_bit::@4 b4: - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 + //SEG58 scroll_bit::@8 b8: - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - b1_from_b7: - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + b1_from_scroll_bit: + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + scroll_hard_from_b1: + jsr scroll_hard + //SEG74 scroll_bit::@7 + b7: + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - b2_from_b1: - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + b2_from_b7: + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] b2_from_b3: - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 + //SEG87 scroll_bit::@5 b5: - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] b3_from_b5: - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -9046,61 +8934,24 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2_from_b3 - //SEG100 scroll_bit::@6 + //SEG97 scroll_bit::@6 b6: - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return + //SEG100 scroll_bit::@return breturn: - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1_from_next_char - //SEG108 next_char::@2 - b2: - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - b1_from_b2: - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - jmp b1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - b1_from_next_char: - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - breturn: - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -9110,85 +8961,122 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] b1_from_b1: - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1_from_b1 - //SEG144 scroll_hard::@return + //SEG126 scroll_hard::@return breturn: - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1_from_next_char + //SEG131 next_char::@2 + b2: + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + b1_from_b2: + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + jmp b1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + b1_from_next_char: + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + breturn: + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -9197,30 +9085,30 @@ fillscreen: { cmp #fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] @@ -9317,137 +9205,134 @@ scroll_soft: { bne b1 //SEG36 scroll_soft::@2 b2: - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] b1_from_b2: - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return + //SEG50 scroll_soft::@return breturn: - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - scroll_hard_from_scroll_bit: - jsr scroll_hard - //SEG56 scroll_bit::@7 - b7: - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 - //SEG60 scroll_bit::@4 + //SEG56 scroll_bit::@4 b4: - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 + //SEG58 scroll_bit::@8 b8: - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] b1_from_b8: - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + jsr scroll_hard + //SEG74 scroll_bit::@7 + b7: + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - b2_from_b1: - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + b2_from_b7: + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 + //SEG87 scroll_bit::@5 b5: - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -9455,60 +9340,24 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 - //SEG100 scroll_bit::@6 + //SEG97 scroll_bit::@6 b6: - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return + //SEG100 scroll_bit::@return breturn: - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1 - //SEG108 next_char::@2 - b2: - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - b1_from_b2: - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - jmp b1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - breturn: - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -9518,83 +9367,119 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 - //SEG144 scroll_hard::@return + //SEG126 scroll_hard::@return breturn: - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1 + //SEG131 next_char::@2 + b2: + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + b1_from_b2: + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + jmp b1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + breturn: + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9603,9 +9488,9 @@ fillscreen: { cmp #fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -9722,128 +9606,126 @@ scroll_soft: { cpx #$ff bne b1 //SEG36 scroll_soft::@2 - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 jmp b1 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG50 scroll_soft::@return + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - jsr scroll_hard - //SEG56 scroll_bit::@7 - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 - //SEG60 scroll_bit::@4 - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG56 scroll_bit::@4 + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG58 scroll_bit::@8 + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy jmp b1 - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + jsr scroll_hard + //SEG74 scroll_bit::@7 + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 jmp b2 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG87 scroll_bit::@5 + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -9851,55 +9733,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 - //SEG100 scroll_bit::@6 - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG97 scroll_bit::@6 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG100 scroll_bit::@return + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1 - //SEG108 next_char::@2 - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - jmp b1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -9909,80 +9758,113 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 - //SEG144 scroll_hard::@return - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG126 scroll_hard::@return + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1 + //SEG131 next_char::@2 + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + jmp b1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9991,8 +9873,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -10089,125 +9971,123 @@ scroll_soft: { cpx #$ff bne b1 //SEG36 scroll_soft::@2 - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG50 scroll_soft::@return + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - jsr scroll_hard - //SEG56 scroll_bit::@7 - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 - //SEG60 scroll_bit::@4 - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG56 scroll_bit::@4 + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG58 scroll_bit::@8 + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + jsr scroll_hard + //SEG74 scroll_bit::@7 + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG87 scroll_bit::@5 + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -10215,54 +10095,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 - //SEG100 scroll_bit::@6 - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG97 scroll_bit::@6 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG100 scroll_bit::@return + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1 - //SEG108 next_char::@2 - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -10272,78 +10120,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 - //SEG144 scroll_hard::@return - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG126 scroll_hard::@return + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1 + //SEG131 next_char::@2 + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -10352,8 +10232,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -10444,125 +10324,123 @@ scroll_soft: { cpx #$ff bne b1 //SEG36 scroll_soft::@2 - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG50 scroll_soft::@return + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - jsr scroll_hard - //SEG56 scroll_bit::@7 - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 - //SEG60 scroll_bit::@4 - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG56 scroll_bit::@4 + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG58 scroll_bit::@8 + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + jsr scroll_hard + //SEG74 scroll_bit::@7 + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG87 scroll_bit::@5 + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -10570,54 +10448,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 - //SEG100 scroll_bit::@6 - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG97 scroll_bit::@6 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG100 scroll_bit::@return + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1 - //SEG108 next_char::@2 - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -10627,78 +10473,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 - //SEG144 scroll_hard::@return - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG126 scroll_hard::@return + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1 + //SEG131 next_char::@2 + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -10707,8 +10585,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -10797,125 +10675,123 @@ scroll_soft: { cpx #$ff bne b1 //SEG36 scroll_soft::@2 - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG50 scroll_soft::@return + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - jsr scroll_hard - //SEG56 scroll_bit::@7 - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 - //SEG60 scroll_bit::@4 - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG56 scroll_bit::@4 + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG58 scroll_bit::@8 + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + jsr scroll_hard + //SEG74 scroll_bit::@7 + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG87 scroll_bit::@5 + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -10923,54 +10799,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 - //SEG100 scroll_bit::@6 - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG97 scroll_bit::@6 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG100 scroll_bit::@return + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1 - //SEG108 next_char::@2 - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -10980,78 +10824,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 - //SEG144 scroll_hard::@return - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG126 scroll_hard::@return + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1 + //SEG131 next_char::@2 + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -11060,8 +10936,8 @@ fillscreen: { cmp #fillscreen] + //SEG9 [68] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG10 [3] phi from main to main::@2 [phi:main->main::@2] //SEG11 [3] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 @@ -11295,125 +11169,123 @@ scroll_soft: { cpx #$ff bne b1 //SEG36 scroll_soft::@2 - //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#37 current_chargen#18 ] ) - //SEG38 [17] phi from scroll_soft::@2 to scroll_bit [phi:scroll_soft::@2->scroll_bit] + //SEG37 [13] call scroll_bit param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7 [ current_bit#21 nxt#36 current_chargen#19 ] ) jsr scroll_bit - //SEG39 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] - //SEG40 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#18 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy - //SEG41 [14] phi (byte*) nxt#0 = (byte*) nxt#37 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy - //SEG42 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy - //SEG43 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 + //SEG38 [14] phi from scroll_soft::@2 to scroll_soft::@1 [phi:scroll_soft::@2->scroll_soft::@1] + //SEG39 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#19 [phi:scroll_soft::@2->scroll_soft::@1#0] -- register_copy + //SEG40 [14] phi (byte*) nxt#0 = (byte*) nxt#36 [phi:scroll_soft::@2->scroll_soft::@1#1] -- register_copy + //SEG41 [14] phi (byte) current_bit#0 = (byte) current_bit#21 [phi:scroll_soft::@2->scroll_soft::@1#2] -- register_copy + //SEG42 [14] phi (byte) scroll#0 = (byte) 7 [phi:scroll_soft::@2->scroll_soft::@1#3] -- xby=coby1 ldx #7 - //SEG44 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] - //SEG45 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy - //SEG46 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy - //SEG47 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy - //SEG48 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy - //SEG49 scroll_soft::@1 + //SEG43 [14] phi from scroll_soft to scroll_soft::@1 [phi:scroll_soft->scroll_soft::@1] + //SEG44 [14] phi (byte*) current_chargen#0 = (byte*) current_chargen#27 [phi:scroll_soft->scroll_soft::@1#0] -- register_copy + //SEG45 [14] phi (byte*) nxt#0 = (byte*) nxt#31 [phi:scroll_soft->scroll_soft::@1#1] -- register_copy + //SEG46 [14] phi (byte) current_bit#0 = (byte) current_bit#29 [phi:scroll_soft->scroll_soft::@1#2] -- register_copy + //SEG47 [14] phi (byte) scroll#0 = (byte) scroll#3 [phi:scroll_soft->scroll_soft::@1#3] -- register_copy + //SEG48 scroll_soft::@1 b1: - //SEG50 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby + //SEG49 [15] *((const byte*) SCROLL#0) ← (byte) scroll#0 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) -- _deref_cowo1=xby stx SCROLL - //SEG51 scroll_soft::@return - //SEG52 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) + //SEG50 scroll_soft::@return + //SEG51 [16] return [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ( main:0::scroll_soft:7 [ scroll#0 current_bit#0 nxt#0 current_chargen#0 ] ) rts } -//SEG53 scroll_bit +//SEG52 scroll_bit scroll_bit: { - .label _8 = 3 + .label _4 = 9 + .label _5 = 3 .label c = 9 .label sc = 5 - //SEG54 [18] call scroll_hard param-assignment [ current_bit#29 nxt#31 current_chargen#27 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#29 nxt#31 current_chargen#27 ] ) - //SEG55 [50] phi from scroll_bit to scroll_hard [phi:scroll_bit->scroll_hard] - jsr scroll_hard - //SEG56 scroll_bit::@7 - //SEG57 [19] (byte~) scroll_bit::$1 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$1 ] ) -- aby=zpby1_ror_1 + //SEG53 [17] (byte~) scroll_bit::$0 ← (byte) current_bit#29 >> (byte) 1 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 scroll_bit::$0 ] ) -- aby=zpby1_ror_1 lda current_bit lsr - //SEG58 [20] (byte) current_bit#5 ← (byte~) scroll_bit::$1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby + //SEG54 [18] (byte) current_bit#5 ← (byte~) scroll_bit::$0 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1=aby sta current_bit - //SEG59 [21] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 + //SEG55 [19] if((byte) current_bit#5!=(byte) 0) goto scroll_bit::@1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:0::scroll_soft:7::scroll_bit:13 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- zpby1_neq_0_then_la1 bne b1 - //SEG60 scroll_bit::@4 - //SEG61 [22] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) + //SEG56 scroll_bit::@4 + //SEG57 [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) jsr next_char - //SEG62 scroll_bit::@8 - //SEG63 [23] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby + //SEG58 scroll_bit::@8 + //SEG59 [21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) -- zpwo1=aby sta c lda #0 sta c+1 - //SEG64 [24] (word) scroll_bit::c#1 ← (word) scroll_bit::c#0 << (byte) 1 [ scroll_bit::c#1 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#1 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG65 [25] (word) scroll_bit::c#2 ← (word) scroll_bit::c#1 << (byte) 1 [ scroll_bit::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#2 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG66 [26] (word) scroll_bit::c#3 ← (word) scroll_bit::c#2 << (byte) 1 [ scroll_bit::c#3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#3 nxt#15 ] ) -- zpwo1=zpwo1_rol_1 - asl c - rol c+1 - //SEG67 [27] (byte*~) scroll_bit::$8 ← (const byte*) CHARGEN#0 + (word) scroll_bit::c#3 [ scroll_bit::$8 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$8 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 + //SEG60 [22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) -- zpwo1=zpwo1_rol_3 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 + //SEG61 [23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) -- zpptrby1=cowo1_plus_zpwo1 lda #CHARGEN - adc c+1 - sta _8+1 - //SEG68 [28] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$8 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) - // (byte*) current_chargen#5 = (byte*~) scroll_bit::$8 // register copy zp ZP_PTR_BYTE:3 - //SEG69 [29] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] - //SEG70 [29] phi (byte*) nxt#37 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy - //SEG71 [29] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 + adc _4+1 + sta _5+1 + //SEG62 [24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) + // (byte*) current_chargen#5 = (byte*~) scroll_bit::$5 // register copy zp ZP_PTR_BYTE:3 + //SEG63 [25] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1] + //SEG64 [25] phi (byte*) nxt#36 = (byte*) nxt#15 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy + //SEG65 [25] phi (byte) current_bit#21 = (byte) 128 [phi:scroll_bit::@8->scroll_bit::@1#1] -- zpby1=coby1 lda #$80 sta current_bit - //SEG72 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy - //SEG73 [29] phi from scroll_bit::@7 to scroll_bit::@1 [phi:scroll_bit::@7->scroll_bit::@1] - //SEG74 [29] phi (byte*) nxt#37 = (byte*) nxt#31 [phi:scroll_bit::@7->scroll_bit::@1#0] -- register_copy - //SEG75 [29] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit::@7->scroll_bit::@1#1] -- register_copy - //SEG76 [29] phi (byte*) current_chargen#18 = (byte*) current_chargen#27 [phi:scroll_bit::@7->scroll_bit::@1#2] -- register_copy - //SEG77 scroll_bit::@1 + //SEG66 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#5 [phi:scroll_bit::@8->scroll_bit::@1#2] -- register_copy + //SEG67 [25] phi from scroll_bit to scroll_bit::@1 [phi:scroll_bit->scroll_bit::@1] + //SEG68 [25] phi (byte*) nxt#36 = (byte*) nxt#31 [phi:scroll_bit->scroll_bit::@1#0] -- register_copy + //SEG69 [25] phi (byte) current_bit#21 = (byte) current_bit#5 [phi:scroll_bit->scroll_bit::@1#1] -- register_copy + //SEG70 [25] phi (byte*) current_chargen#19 = (byte*) current_chargen#27 [phi:scroll_bit->scroll_bit::@1#2] -- register_copy + //SEG71 scroll_bit::@1 b1: - //SEG78 asm { sei } + //SEG72 [26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG73 [41] phi from scroll_bit::@1 to scroll_hard [phi:scroll_bit::@1->scroll_hard] + jsr scroll_hard + //SEG74 scroll_bit::@7 + //SEG75 asm { sei } sei - //SEG79 [31] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG76 [28] *((const byte*) PROCPORT#0) ← (byte) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$32 sta PROCPORT - //SEG80 [32] phi from scroll_bit::@1 to scroll_bit::@2 [phi:scroll_bit::@1->scroll_bit::@2] - //SEG81 [32] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@1->scroll_bit::@2#0] -- zpptrby1=cowo1 + //SEG77 [29] phi from scroll_bit::@7 to scroll_bit::@2 [phi:scroll_bit::@7->scroll_bit::@2] + //SEG78 [29] phi (byte*) scroll_bit::sc#2 = (const byte*) SCREEN#0+(byte) 40+(byte) 39 [phi:scroll_bit::@7->scroll_bit::@2#0] -- zpptrby1=cowo1 lda #SCREEN+$28+$27 sta sc+1 - //SEG82 [32] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@1->scroll_bit::@2#1] -- xby=coby1 + //SEG79 [29] phi (byte) scroll_bit::r#2 = (byte) 0 [phi:scroll_bit::@7->scroll_bit::@2#1] -- xby=coby1 ldx #0 - //SEG83 [32] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] - //SEG84 [32] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy - //SEG85 [32] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy - //SEG86 scroll_bit::@2 + //SEG80 [29] phi from scroll_bit::@3 to scroll_bit::@2 [phi:scroll_bit::@3->scroll_bit::@2] + //SEG81 [29] phi (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#1 [phi:scroll_bit::@3->scroll_bit::@2#0] -- register_copy + //SEG82 [29] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy + //SEG83 scroll_bit::@2 b2: - //SEG87 [33] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#18 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby + //SEG84 [30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- aby=zpptrby1_derefidx_xby stx $ff ldy $ff lda (current_chargen),y - //SEG88 [34] (byte~) scroll_bit::$12 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$12 ] ) -- aby=aby_band_zpby1 + //SEG85 [31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- aby=aby_band_zpby1 and current_bit - //SEG89 [35] if((byte~) scroll_bit::$12==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 + //SEG86 [32] if((byte~) scroll_bit::$10==(byte) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- aby_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG90 scroll_bit::@5 - //SEG91 [36] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] - //SEG92 [36] phi (byte) scroll_bit::b#2 = (byte) '*' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 - lda #'*' + //SEG87 scroll_bit::@5 + //SEG88 [33] phi from scroll_bit::@5 to scroll_bit::@3 [phi:scroll_bit::@5->scroll_bit::@3] + //SEG89 [33] phi (byte) scroll_bit::b#2 = (byte) 128+(byte) ' ' [phi:scroll_bit::@5->scroll_bit::@3#0] -- aby=coby1 + lda #$80+' ' jmp b3 - //SEG93 [36] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] + //SEG90 [33] phi from scroll_bit::@2 to scroll_bit::@3 [phi:scroll_bit::@2->scroll_bit::@3] b3_from_b2: - //SEG94 [36] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 + //SEG91 [33] phi (byte) scroll_bit::b#2 = (byte) ' ' [phi:scroll_bit::@2->scroll_bit::@3#0] -- aby=coby1 lda #' ' - //SEG95 scroll_bit::@3 + //SEG92 scroll_bit::@3 b3: - //SEG96 [37] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby + //SEG93 [34] *((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:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- _deref_zpptrby1=aby ldy #0 sta (sc),y - //SEG97 [38] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 + //SEG94 [35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) -- zpptrby1=zpptrby1_plus_coby1 lda sc clc adc #$28 @@ -11421,54 +11293,22 @@ scroll_bit: { bcc !+ inc sc+1 !: - //SEG98 [39] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby + //SEG95 [36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby=_inc_xby inx - //SEG99 [40] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 + //SEG96 [37] if((byte) scroll_bit::r#1!=(byte) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) -- xby_neq_coby1_then_la1 cpx #8 bne b2 - //SEG100 scroll_bit::@6 - //SEG101 [41] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) -- _deref_cowo1=coby2 + //SEG97 scroll_bit::@6 + //SEG98 [38] *((const byte*) PROCPORT#0) ← (byte) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) -- _deref_cowo1=coby2 lda #$37 sta PROCPORT - //SEG102 asm { cli } + //SEG99 asm { cli } cli - //SEG103 scroll_bit::@return - //SEG104 [43] return [ current_bit#21 nxt#37 current_chargen#18 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#37 current_chargen#18 ] ) + //SEG100 scroll_bit::@return + //SEG101 [40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG105 next_char -next_char: { - //SEG106 [44] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 - ldy #0 - lda (nxt),y - //SEG107 [45] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 - cmp #'@' - bne b1 - //SEG108 next_char::@2 - //SEG109 [46] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#1 ] ) -- aby=_deref_cowo1 - lda TEXT - //SEG110 [47] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG111 [47] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG112 [47] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 - lda #TEXT - sta nxt+1 - //SEG113 [47] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG114 [47] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG115 [47] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG116 next_char::@1 - b1: - //SEG117 [48] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 - inc nxt - bne !+ - inc nxt+1 - !: - //SEG118 next_char::@return - //SEG119 [49] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:22 [ next_char::c#2 nxt#15 ] ) - rts -} -//SEG120 scroll_hard +//SEG102 scroll_hard scroll_hard: { .const line0 = SCREEN+$28*0 .const line1 = SCREEN+$28*1 @@ -11478,78 +11318,110 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - //SEG121 [51] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] - //SEG122 [51] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 + //SEG103 [42] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] + //SEG104 [42] phi (byte) scroll_hard::i#2 = (byte) 0 [phi:scroll_hard->scroll_hard::@1#0] -- xby=coby1 ldx #0 - //SEG123 [51] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] - //SEG124 [51] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy - //SEG125 scroll_hard::@1 + //SEG105 [42] phi from scroll_hard::@1 to scroll_hard::@1 [phi:scroll_hard::@1->scroll_hard::@1] + //SEG106 [42] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy + //SEG107 scroll_hard::@1 b1: - //SEG126 [52] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby + //SEG108 [43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- aby=cowo1_derefidx_xby lda line0+1,x - //SEG127 [53] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG109 [44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line0,x - //SEG128 [54] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby + //SEG110 [45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- aby=cowo1_derefidx_xby lda line1+1,x - //SEG129 [55] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG111 [46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line1,x - //SEG130 [56] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby + //SEG112 [47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- aby=cowo1_derefidx_xby lda line2+1,x - //SEG131 [57] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG113 [48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line2,x - //SEG132 [58] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby + //SEG114 [49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- aby=cowo1_derefidx_xby lda line3+1,x - //SEG133 [59] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG115 [50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line3,x - //SEG134 [60] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby + //SEG116 [51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- aby=cowo1_derefidx_xby lda line4+1,x - //SEG135 [61] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG117 [52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line4,x - //SEG136 [62] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby + //SEG118 [53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- aby=cowo1_derefidx_xby lda line5+1,x - //SEG137 [63] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG119 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line5,x - //SEG138 [64] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby + //SEG120 [55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- aby=cowo1_derefidx_xby lda line6+1,x - //SEG139 [65] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG121 [56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line6,x - //SEG140 [66] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby + //SEG122 [57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- aby=cowo1_derefidx_xby lda line7+1,x - //SEG141 [67] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby + //SEG123 [58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- cowo1_derefidx_xby=aby sta line7,x - //SEG142 [68] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby=_inc_xby + //SEG124 [59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby=_inc_xby inx - //SEG143 [69] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 + //SEG125 [60] if((byte) scroll_hard::i#1!=(byte) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- xby_neq_coby1_then_la1 cpx #$27 bne b1 - //SEG144 scroll_hard::@return - //SEG145 [70] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:18 [ current_bit#29 nxt#31 current_chargen#27 ] ) + //SEG126 scroll_hard::@return + //SEG127 [61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG146 fillscreen +//SEG128 next_char +next_char: { + //SEG129 [62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby=_deref_zpptrby1 + ldy #0 + lda (nxt),y + //SEG130 [63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) -- aby_neq_coby1_then_la1 + cmp #'@' + bne b1 + //SEG131 next_char::@2 + //SEG132 [64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) -- aby=_deref_cowo1 + lda TEXT + //SEG133 [65] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG134 [65] phi (byte) next_char::c#2 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG135 [65] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- zpptrby1=cowo1 + lda #TEXT + sta nxt+1 + //SEG136 [65] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG137 [65] phi (byte) next_char::c#2 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG138 [65] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG139 next_char::@1 + b1: + //SEG140 [66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) -- zpptrby1=_inc_zpptrby1 + inc nxt + bne !+ + inc nxt+1 + !: + //SEG141 next_char::@return + //SEG142 [67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) + rts +} +//SEG143 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG147 [72] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG148 [72] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 + //SEG144 [69] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG145 [69] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG149 [72] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG150 [72] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG151 fillscreen::@1 + //SEG146 [69] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG147 [69] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG148 fillscreen::@1 b1: - //SEG152 [73] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 + //SEG149 [70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) -- _deref_zpptrby1=coby1 ldy #0 lda #fill sta (cursor),y - //SEG153 [74] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 + //SEG150 [71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1=_inc_zpptrby1 inc cursor bne !+ inc cursor+1 !: - //SEG154 [75] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 + //SEG151 [72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) -- zpptrby1_lt_cowo1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -11558,8 +11430,8 @@ fillscreen: { cmp #>1; if(current_bit==0) { word c = next_char(); - c = c<<1; - c = c<<1; - c = c<<1; - current_chargen = CHARGEN+c; + current_chargen = CHARGEN+c<<3; current_bit = $80; } + scroll_hard(); asm { sei } *PROCPORT = $32; byte* sc = SCREEN+40+39; @@ -51,7 +48,7 @@ void scroll_bit() { byte bits = current_chargen[r]; byte b = ' '; if((bits & current_bit) != 0) { - b = '*'; + b = 128+' '; } *sc = b; sc = sc+40;