1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Using inverse space in scroller

This commit is contained in:
jespergravgaard 2017-11-17 10:17:57 +01:00
parent e64b12e7be
commit a1baf2e046
10 changed files with 3164 additions and 3260 deletions

View File

@ -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 &&

View File

@ -0,0 +1,4 @@
asl {zpwo1}
rol {zpwo1}+1
asl {zpwo1}
rol {zpwo1}+1

View File

@ -0,0 +1,6 @@
asl {zpwo1}
rol {zpwo1}+1
asl {zpwo1}
rol {zpwo1}+1
asl {zpwo1}
rol {zpwo1}+1

View File

@ -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

View File

@ -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

View File

@ -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
clc
adc c
sta _8
adc _4
sta _5
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
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
lda #>TEXT
sta nxt+1
b1:
inc nxt
bne !+
inc nxt+1
!:
rts
}
fillscreen: {
.const fill = $20
.label cursor = 3

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -17,13 +17,13 @@
(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
(byte) current_bit
(byte) current_bit#0 current_bit zp ZP_BYTE:2 2.5
(byte) current_bit#21 current_bit zp ZP_BYTE:2 0.9375
(byte) current_bit#29 current_bit zp ZP_BYTE:2 1.875
(byte) current_bit#21 current_bit zp ZP_BYTE:2 0.8823529411764706
(byte) current_bit#29 current_bit zp ZP_BYTE:2 2.5
(byte) current_bit#5 current_bit zp ZP_BYTE:2 3.0
(byte*) current_chargen
(byte*) current_chargen#0 current_chargen zp ZP_PTR_BYTE:3 2.5
(byte*) current_chargen#18 current_chargen zp ZP_PTR_BYTE:3 1.0625
(byte*) current_chargen#27 current_chargen zp ZP_PTR_BYTE:3 1.3636363636363638
(byte*) current_chargen#19 current_chargen zp ZP_PTR_BYTE:3 1.0
(byte*) current_chargen#27 current_chargen zp ZP_PTR_BYTE:3 1.666666666666667
(byte*) current_chargen#5 current_chargen zp ZP_PTR_BYTE:3 4.0
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
(label) fillscreen::@1
@ -51,18 +51,19 @@
(byte) next_char::return
(byte*) nxt
(byte*) nxt#0 nxt zp ZP_PTR_BYTE:7 2.5
(byte*) nxt#15 nxt zp ZP_PTR_BYTE:7 0.4444444444444444
(byte*) nxt#15 nxt zp ZP_PTR_BYTE:7 0.5714285714285714
(byte*) nxt#18 nxt zp ZP_PTR_BYTE:7 4.0
(byte*) nxt#31 nxt zp ZP_PTR_BYTE:7 1.3076923076923075
(byte*) nxt#37 nxt zp ZP_PTR_BYTE:7 0.375
(byte*) nxt#31 nxt zp ZP_PTR_BYTE:7 1.5454545454545456
(byte*) nxt#36 nxt zp ZP_PTR_BYTE:7 0.3529411764705882
(byte) scroll
(byte) scroll#0 reg byte x 2.5
(byte) scroll#18 reg byte x 3.25
(byte) scroll#3 reg byte x 3.0
(void()) scroll_bit()
(byte~) scroll_bit::$1 reg byte a 4.0
(byte~) scroll_bit::$12 reg byte a 22.0
(byte*~) scroll_bit::$8 $8 zp ZP_PTR_BYTE:3 4.0
(byte~) scroll_bit::$0 reg byte a 4.0
(byte~) scroll_bit::$10 reg byte a 22.0
(word~) scroll_bit::$4 $4 zp ZP_WORD:9 4.0
(byte*~) scroll_bit::$5 $5 zp ZP_PTR_BYTE:3 4.0
(label) scroll_bit::@1
(label) scroll_bit::@2
(label) scroll_bit::@3
@ -78,9 +79,6 @@
(byte) scroll_bit::bits#0 reg byte a 22.0
(word) scroll_bit::c
(word) scroll_bit::c#0 c zp ZP_WORD:9 4.0
(word) scroll_bit::c#1 c zp ZP_WORD:9 4.0
(word) scroll_bit::c#2 c zp ZP_WORD:9 4.0
(word) scroll_bit::c#3 c zp ZP_WORD:9 4.0
(byte) scroll_bit::r
(byte) scroll_bit::r#1 reg byte x 16.5
(byte) scroll_bit::r#2 reg byte x 4.714285714285714
@ -124,17 +122,17 @@
reg byte x [ scroll#18 scroll#0 scroll#3 ]
zp ZP_BYTE:2 [ current_bit#29 current_bit#0 current_bit#21 current_bit#5 ]
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 ]
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 ]
reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ]
zp ZP_PTR_BYTE:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ]
reg byte a [ scroll_bit::b#2 ]
zp ZP_PTR_BYTE:7 [ nxt#18 nxt#31 nxt#0 nxt#37 nxt#15 ]
reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ]
reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ]
reg byte a [ scroll_bit::$1 ]
zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::c#1 scroll_bit::c#2 scroll_bit::c#3 ]
zp ZP_PTR_BYTE:7 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ]
reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ]
reg byte a [ scroll_bit::$0 ]
zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ]
reg byte a [ scroll_bit::bits#0 ]
reg byte a [ scroll_bit::$12 ]
reg byte a [ scroll_bit::$10 ]
reg byte a [ scroll_hard::$17 ]
reg byte a [ scroll_hard::$19 ]
reg byte a [ scroll_hard::$21 ]

View File

@ -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;