mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-08 17:54:40 +00:00
Fixed loop detection problem.
This commit is contained in:
parent
10fd6ff19a
commit
91589327e3
@ -64,7 +64,21 @@ public class Pass3LoopAnalysis extends Pass2Base {
|
|||||||
getLog().append("Populated: " + loop.toString());
|
getLog().append("Populated: " + loop.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Coalesce loops that are neither nested, nor disjoint
|
boolean coalesceMore = true;
|
||||||
|
while(coalesceMore) {
|
||||||
|
coalesceMore = coalesceLoops(loopSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
getProgram().setLoopSet(loopSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Coalesce loops that are neither nested, nor disjoint
|
||||||
|
* @param loopSet The set of loops
|
||||||
|
* @return true if there might be more loops to coalesce - meaning the coalescer shoulbe be called again.
|
||||||
|
* false if no loops can be coalesced.
|
||||||
|
*/
|
||||||
|
private boolean coalesceLoops(NaturalLoopSet loopSet) {
|
||||||
for(NaturalLoop loop : loopSet.getLoops()) {
|
for(NaturalLoop loop : loopSet.getLoops()) {
|
||||||
Set<NaturalLoop> headLoops = loopSet.getLoopsFromHead(loop.getHead());
|
Set<NaturalLoop> headLoops = loopSet.getLoopsFromHead(loop.getHead());
|
||||||
for(NaturalLoop other : headLoops) {
|
for(NaturalLoop other : headLoops) {
|
||||||
@ -80,11 +94,11 @@ public class Pass3LoopAnalysis extends Pass2Base {
|
|||||||
loop.addBlocks(other.getBlocks());
|
loop.addBlocks(other.getBlocks());
|
||||||
loopSet.remove(other);
|
loopSet.remove(other);
|
||||||
getLog().append("Coalesced: " + loop.toString());
|
getLog().append("Coalesced: " + loop.toString());
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
getProgram().setLoopSet(loopSet);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,12 +48,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLoopProblem2() throws IOException, URISyntaxException {
|
public void testLoopProblem2() throws IOException, URISyntaxException {
|
||||||
try {
|
|
||||||
compileAndCompare("loop-problem2");
|
compileAndCompare("loop-problem2");
|
||||||
} catch(ConcurrentModificationException e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fail("Exception expected!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -125,6 +125,9 @@ void menu() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The value of the DTV control register
|
||||||
|
byte dtv_control = 0;
|
||||||
|
|
||||||
// Allow the user to control the DTV graphics using different keys
|
// Allow the user to control the DTV graphics using different keys
|
||||||
void mode_ctrl() {
|
void mode_ctrl() {
|
||||||
while(true) {
|
while(true) {
|
||||||
@ -134,19 +137,7 @@ void mode_ctrl() {
|
|||||||
if(keyboard_key_pressed(KEY_SPACE)!=0) {
|
if(keyboard_key_pressed(KEY_SPACE)!=0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mode_ctrl_keys();
|
// Read the current control byte
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The value of the DTV control register
|
|
||||||
byte dtv_control = 0;
|
|
||||||
|
|
||||||
void mode_ctrl_keys() {
|
|
||||||
// Read the current control byte
|
|
||||||
if(dtv_control==$ff) {
|
|
||||||
*BORDERCOL = 2;
|
|
||||||
} else {
|
|
||||||
*BORDERCOL = dtv_control;
|
|
||||||
byte ctrl = dtv_control;
|
byte ctrl = dtv_control;
|
||||||
// Test for control keys
|
// Test for control keys
|
||||||
if(keyboard_key_pressed(KEY_L)!=0) {
|
if(keyboard_key_pressed(KEY_L)!=0) {
|
||||||
@ -177,6 +168,7 @@ void mode_ctrl_keys() {
|
|||||||
// DTV Graphics Mode - Reset
|
// DTV Graphics Mode - Reset
|
||||||
ctrl = 0;
|
ctrl = 0;
|
||||||
}
|
}
|
||||||
|
// If the control byte is modified - write it
|
||||||
if(ctrl != dtv_control) {
|
if(ctrl != dtv_control) {
|
||||||
dtv_control = ctrl;
|
dtv_control = ctrl;
|
||||||
*DTV_CONTROL = ctrl;
|
*DTV_CONTROL = ctrl;
|
||||||
@ -185,6 +177,7 @@ void mode_ctrl_keys() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Standard Character Mode (LINEAR/HICOL/CHUNK/COLDIS/ECM/MCM/BMM = 0)
|
// Standard Character Mode (LINEAR/HICOL/CHUNK/COLDIS/ECM/MCM/BMM = 0)
|
||||||
// Resolution: 320x200
|
// Resolution: 320x200
|
||||||
// Normal VIC Adressing:
|
// Normal VIC Adressing:
|
||||||
|
@ -14,7 +14,7 @@ void print_cls() {
|
|||||||
|
|
||||||
void mode_ctrl() {
|
void mode_ctrl() {
|
||||||
while(true) {
|
while(true) {
|
||||||
byte before = 0;
|
byte before = *BORDERCOL;
|
||||||
if(before==$ff) {
|
if(before==$ff) {
|
||||||
*BORDERCOL = 2;
|
*BORDERCOL = 2;
|
||||||
} else {
|
} else {
|
||||||
|
@ -76,6 +76,7 @@
|
|||||||
.const KEY_2 = $3b
|
.const KEY_2 = $3b
|
||||||
.const KEY_SPACE = $3c
|
.const KEY_SPACE = $3c
|
||||||
.label print_char_cursor = 5
|
.label print_char_cursor = 5
|
||||||
|
.label dtv_control = 2
|
||||||
.label print_line_cursor = $d
|
.label print_line_cursor = $d
|
||||||
jsr main
|
jsr main
|
||||||
main: {
|
main: {
|
||||||
@ -86,7 +87,8 @@ main: {
|
|||||||
sta PROCPORT
|
sta PROCPORT
|
||||||
lda #DTV_FEATURE_ENABLE
|
lda #DTV_FEATURE_ENABLE
|
||||||
sta DTV_FEATURE
|
sta DTV_FEATURE
|
||||||
ldx #0
|
lda #0
|
||||||
|
sta dtv_control
|
||||||
b2:
|
b2:
|
||||||
jsr menu
|
jsr menu
|
||||||
jmp b2
|
jmp b2
|
||||||
@ -94,7 +96,7 @@ main: {
|
|||||||
menu: {
|
menu: {
|
||||||
.label SCREEN = $8000
|
.label SCREEN = $8000
|
||||||
.label CHARSET = $9800
|
.label CHARSET = $9800
|
||||||
.label c = 2
|
.label c = 3
|
||||||
lda #($ffffffff&CHARSET)/$10000
|
lda #($ffffffff&CHARSET)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||||
@ -112,12 +114,12 @@ menu: {
|
|||||||
sta VIC_CONTROL2
|
sta VIC_CONTROL2
|
||||||
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
|
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
|
||||||
sta VIC_MEMORY
|
sta VIC_MEMORY
|
||||||
ldy #0
|
ldx #0
|
||||||
b1:
|
b1:
|
||||||
lda DTV_PALETTE_DEFAULT,y
|
lda DTV_PALETTE_DEFAULT,x
|
||||||
sta DTV_PALETTE,y
|
sta DTV_PALETTE,x
|
||||||
iny
|
inx
|
||||||
cpy #$10
|
cpx #$10
|
||||||
bne b1
|
bne b1
|
||||||
lda #<COLS
|
lda #<COLS
|
||||||
sta c
|
sta c
|
||||||
@ -237,8 +239,8 @@ mode_8bppchunkybmm: {
|
|||||||
.const PLANEB = $20000
|
.const PLANEB = $20000
|
||||||
.label _23 = $d
|
.label _23 = $d
|
||||||
.label gfxb = 5
|
.label gfxb = 5
|
||||||
.label x = 2
|
.label x = 3
|
||||||
.label y = 4
|
.label y = 2
|
||||||
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
|
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
|
||||||
sta DTV_CONTROL
|
sta DTV_CONTROL
|
||||||
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
||||||
@ -322,7 +324,8 @@ mode_8bppchunkybmm: {
|
|||||||
bne b2
|
bne b2
|
||||||
lda #$4000/$4000
|
lda #$4000/$4000
|
||||||
jsr dtvSetCpuBankSegment1
|
jsr dtvSetCpuBankSegment1
|
||||||
ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
|
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
@ -340,83 +343,67 @@ mode_ctrl: {
|
|||||||
beq b7
|
beq b7
|
||||||
jmp breturn
|
jmp breturn
|
||||||
b7:
|
b7:
|
||||||
jsr mode_ctrl_keys
|
ldx dtv_control
|
||||||
jmp b4
|
|
||||||
}
|
|
||||||
mode_ctrl_keys: {
|
|
||||||
.label ctrl = 4
|
|
||||||
cpx #$ff
|
|
||||||
bne b1
|
|
||||||
lda #2
|
|
||||||
sta BORDERCOL
|
|
||||||
breturn:
|
|
||||||
rts
|
|
||||||
b1:
|
|
||||||
stx BORDERCOL
|
|
||||||
stx ctrl
|
|
||||||
ldy #KEY_L
|
ldy #KEY_L
|
||||||
jsr keyboard_key_pressed
|
jsr keyboard_key_pressed
|
||||||
cmp #0
|
cmp #0
|
||||||
beq b3
|
beq b8
|
||||||
lda #DTV_LINEAR
|
txa
|
||||||
ora ctrl
|
ora #DTV_LINEAR
|
||||||
sta ctrl
|
tax
|
||||||
b3:
|
b8:
|
||||||
ldy #KEY_H
|
ldy #KEY_H
|
||||||
jsr keyboard_key_pressed
|
jsr keyboard_key_pressed
|
||||||
cmp #0
|
cmp #0
|
||||||
beq b4
|
beq b9
|
||||||
lda #DTV_HIGHCOLOR
|
txa
|
||||||
ora ctrl
|
ora #DTV_HIGHCOLOR
|
||||||
sta ctrl
|
tax
|
||||||
b4:
|
b9:
|
||||||
ldy #KEY_O
|
ldy #KEY_O
|
||||||
jsr keyboard_key_pressed
|
jsr keyboard_key_pressed
|
||||||
cmp #0
|
cmp #0
|
||||||
beq b5
|
beq b10
|
||||||
lda #DTV_OVERSCAN
|
txa
|
||||||
ora ctrl
|
ora #DTV_OVERSCAN
|
||||||
sta ctrl
|
tax
|
||||||
b5:
|
b10:
|
||||||
ldy #KEY_B
|
ldy #KEY_B
|
||||||
jsr keyboard_key_pressed
|
jsr keyboard_key_pressed
|
||||||
cmp #0
|
cmp #0
|
||||||
beq b6
|
beq b11
|
||||||
lda #DTV_BORDER_OFF
|
txa
|
||||||
ora ctrl
|
ora #DTV_BORDER_OFF
|
||||||
sta ctrl
|
tax
|
||||||
b6:
|
b11:
|
||||||
ldy #KEY_U
|
ldy #KEY_U
|
||||||
jsr keyboard_key_pressed
|
jsr keyboard_key_pressed
|
||||||
cmp #0
|
cmp #0
|
||||||
beq b7
|
beq b12
|
||||||
lda #DTV_CHUNKY
|
txa
|
||||||
ora ctrl
|
ora #DTV_CHUNKY
|
||||||
sta ctrl
|
tax
|
||||||
b7:
|
b12:
|
||||||
ldy #KEY_C
|
ldy #KEY_C
|
||||||
jsr keyboard_key_pressed
|
jsr keyboard_key_pressed
|
||||||
cmp #0
|
cmp #0
|
||||||
beq b8
|
beq b13
|
||||||
lda #DTV_COLORRAM_OFF
|
txa
|
||||||
ora ctrl
|
ora #DTV_COLORRAM_OFF
|
||||||
sta ctrl
|
tax
|
||||||
b8:
|
b13:
|
||||||
ldy #KEY_0
|
ldy #KEY_0
|
||||||
jsr keyboard_key_pressed
|
jsr keyboard_key_pressed
|
||||||
cmp #0
|
cmp #0
|
||||||
beq b9
|
beq b14
|
||||||
lda #0
|
ldx #0
|
||||||
sta ctrl
|
b14:
|
||||||
b9:
|
cpx dtv_control
|
||||||
cpx ctrl
|
beq b4
|
||||||
beq breturn
|
stx dtv_control
|
||||||
ldx ctrl
|
stx DTV_CONTROL
|
||||||
txa
|
stx BORDERCOL
|
||||||
sta DTV_CONTROL
|
jmp b4
|
||||||
txa
|
|
||||||
sta BORDERCOL
|
|
||||||
jmp breturn
|
|
||||||
}
|
}
|
||||||
keyboard_key_pressed: {
|
keyboard_key_pressed: {
|
||||||
.label colidx = 7
|
.label colidx = 7
|
||||||
@ -452,14 +439,14 @@ mode_8bpppixelcell: {
|
|||||||
.label PLANEA = $3c00
|
.label PLANEA = $3c00
|
||||||
.label PLANEB = $4000
|
.label PLANEB = $4000
|
||||||
.label _14 = 7
|
.label _14 = 7
|
||||||
.label gfxa = 2
|
.label gfxa = 3
|
||||||
.label ay = 4
|
.label ay = 2
|
||||||
.label bits = 8
|
.label bits = 8
|
||||||
.label chargen = 2
|
.label chargen = 3
|
||||||
.label gfxb = 5
|
.label gfxb = 5
|
||||||
.label col = 9
|
.label col = 9
|
||||||
.label cr = 7
|
.label cr = 7
|
||||||
.label ch = 4
|
.label ch = 2
|
||||||
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
||||||
sta DTV_CONTROL
|
sta DTV_CONTROL
|
||||||
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
||||||
@ -581,7 +568,8 @@ mode_8bpppixelcell: {
|
|||||||
bne b4
|
bne b4
|
||||||
lda #PROCPORT_RAM_IO
|
lda #PROCPORT_RAM_IO
|
||||||
sta PROCPORT
|
sta PROCPORT
|
||||||
ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
@ -589,12 +577,12 @@ mode_sixsfred: {
|
|||||||
.label PLANEA = $4000
|
.label PLANEA = $4000
|
||||||
.label PLANEB = $6000
|
.label PLANEB = $6000
|
||||||
.label COLORS = $8000
|
.label COLORS = $8000
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
.label gfxa = 2
|
.label gfxa = 3
|
||||||
.label ay = 4
|
.label ay = 2
|
||||||
.label gfxb = 2
|
.label gfxb = 3
|
||||||
.label by = 4
|
.label by = 2
|
||||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||||
sta DTV_CONTROL
|
sta DTV_CONTROL
|
||||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||||
@ -712,7 +700,8 @@ mode_sixsfred: {
|
|||||||
lda by
|
lda by
|
||||||
cmp #$c8
|
cmp #$c8
|
||||||
bne b6
|
bne b6
|
||||||
ldx #DTV_HIGHCOLOR|DTV_LINEAR
|
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
row_bitmask: .byte 0, $55, $aa, $ff
|
row_bitmask: .byte 0, $55, $aa, $ff
|
||||||
@ -722,12 +711,12 @@ mode_twoplanebitmap: {
|
|||||||
.label PLANEB = $6000
|
.label PLANEB = $6000
|
||||||
.label COLORS = $8000
|
.label COLORS = $8000
|
||||||
.label _16 = 7
|
.label _16 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
.label gfxa = 2
|
.label gfxa = 3
|
||||||
.label ay = 4
|
.label ay = 2
|
||||||
.label gfxb = 2
|
.label gfxb = 3
|
||||||
.label by = 4
|
.label by = 2
|
||||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||||
sta DTV_CONTROL
|
sta DTV_CONTROL
|
||||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||||
@ -856,7 +845,8 @@ mode_twoplanebitmap: {
|
|||||||
lda by
|
lda by
|
||||||
cmp #$c8
|
cmp #$c8
|
||||||
bne b8
|
bne b8
|
||||||
ldx #DTV_HIGHCOLOR|DTV_LINEAR
|
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
b6:
|
b6:
|
||||||
@ -874,12 +864,12 @@ mode_sixsfred2: {
|
|||||||
.label PLANEB = $6000
|
.label PLANEB = $6000
|
||||||
.label COLORS = $8000
|
.label COLORS = $8000
|
||||||
.label _15 = 7
|
.label _15 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
.label gfxa = 2
|
.label gfxa = 3
|
||||||
.label ay = 4
|
.label ay = 2
|
||||||
.label gfxb = 2
|
.label gfxb = 3
|
||||||
.label by = 4
|
.label by = 2
|
||||||
lda #DTV_LINEAR
|
lda #DTV_LINEAR
|
||||||
sta DTV_CONTROL
|
sta DTV_CONTROL
|
||||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||||
@ -1003,7 +993,8 @@ mode_sixsfred2: {
|
|||||||
lda by
|
lda by
|
||||||
cmp #$c8
|
cmp #$c8
|
||||||
bne b6
|
bne b6
|
||||||
ldx #DTV_LINEAR
|
lda #DTV_LINEAR
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
row_bitmask: .byte 0, $55, $aa, $ff
|
row_bitmask: .byte 0, $55, $aa, $ff
|
||||||
@ -1013,9 +1004,9 @@ mode_hicolmcchar: {
|
|||||||
.label CHARSET = $9000
|
.label CHARSET = $9000
|
||||||
.label COLORS = $8400
|
.label COLORS = $8400
|
||||||
.label _26 = 7
|
.label _26 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label ch = 5
|
.label ch = 5
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
lda #($ffffffff&CHARSET)/$10000
|
lda #($ffffffff&CHARSET)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #COLORS/$400
|
lda #COLORS/$400
|
||||||
@ -1091,7 +1082,8 @@ mode_hicolmcchar: {
|
|||||||
lda cy
|
lda cy
|
||||||
cmp #$19
|
cmp #$19
|
||||||
bne b2
|
bne b2
|
||||||
ldx #DTV_HIGHCOLOR
|
lda #DTV_HIGHCOLOR
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
@ -1100,9 +1092,9 @@ mode_hicolecmchar: {
|
|||||||
.label CHARSET = $9000
|
.label CHARSET = $9000
|
||||||
.label COLORS = $8400
|
.label COLORS = $8400
|
||||||
.label _26 = 7
|
.label _26 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label ch = 5
|
.label ch = 5
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
lda #($ffffffff&CHARSET)/$10000
|
lda #($ffffffff&CHARSET)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #COLORS/$400
|
lda #COLORS/$400
|
||||||
@ -1180,7 +1172,8 @@ mode_hicolecmchar: {
|
|||||||
lda cy
|
lda cy
|
||||||
cmp #$19
|
cmp #$19
|
||||||
bne b2
|
bne b2
|
||||||
ldx #DTV_HIGHCOLOR
|
lda #DTV_HIGHCOLOR
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
@ -1189,9 +1182,9 @@ mode_hicolstdchar: {
|
|||||||
.label CHARSET = $9000
|
.label CHARSET = $9000
|
||||||
.label COLORS = $8400
|
.label COLORS = $8400
|
||||||
.label _25 = 7
|
.label _25 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label ch = 5
|
.label ch = 5
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
lda #($ffffffff&CHARSET)/$10000
|
lda #($ffffffff&CHARSET)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #COLORS/$400
|
lda #COLORS/$400
|
||||||
@ -1262,7 +1255,8 @@ mode_hicolstdchar: {
|
|||||||
lda cy
|
lda cy
|
||||||
cmp #$19
|
cmp #$19
|
||||||
bne b2
|
bne b2
|
||||||
ldx #DTV_HIGHCOLOR
|
lda #DTV_HIGHCOLOR
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
@ -1271,9 +1265,9 @@ mode_stdbitmap: {
|
|||||||
.label BITMAP = $6000
|
.label BITMAP = $6000
|
||||||
.const lines_cnt = 9
|
.const lines_cnt = 9
|
||||||
.label col2 = 7
|
.label col2 = 7
|
||||||
.label ch = 2
|
.label ch = 3
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
.label l = 4
|
.label l = 2
|
||||||
lda #($ffffffff&BITMAP)/$10000
|
lda #($ffffffff&BITMAP)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #0
|
lda #0
|
||||||
@ -1355,7 +1349,8 @@ mode_stdbitmap: {
|
|||||||
lda l
|
lda l
|
||||||
cmp #lines_cnt
|
cmp #lines_cnt
|
||||||
bcc b4
|
bcc b4
|
||||||
ldx #0
|
lda #0
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
lines_x: .byte 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80
|
lines_x: .byte 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80
|
||||||
@ -1492,8 +1487,8 @@ bitmap_line_ydxi: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
bitmap_plot: {
|
bitmap_plot: {
|
||||||
.label _0 = 2
|
.label _0 = 3
|
||||||
.label plotter_x = 2
|
.label plotter_x = 3
|
||||||
.label plotter_y = 5
|
.label plotter_y = 5
|
||||||
lda bitmap_plot_xhi,x
|
lda bitmap_plot_xhi,x
|
||||||
sta plotter_x+1
|
sta plotter_x+1
|
||||||
@ -1617,9 +1612,9 @@ bitmap_line_xdyd: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
bitmap_clear: {
|
bitmap_clear: {
|
||||||
.label bitmap = 2
|
.label bitmap = 3
|
||||||
.label y = 4
|
.label y = 2
|
||||||
.label _3 = 2
|
.label _3 = 3
|
||||||
lda bitmap_plot_xlo+0
|
lda bitmap_plot_xlo+0
|
||||||
sta _3
|
sta _3
|
||||||
lda bitmap_plot_xhi+0
|
lda bitmap_plot_xhi+0
|
||||||
@ -1646,8 +1641,8 @@ bitmap_clear: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
bitmap_init: {
|
bitmap_init: {
|
||||||
.label _6 = 4
|
.label _6 = 2
|
||||||
.label yoffs = 2
|
.label yoffs = 3
|
||||||
ldy #$80
|
ldy #$80
|
||||||
ldx #0
|
ldx #0
|
||||||
b1:
|
b1:
|
||||||
@ -1703,9 +1698,9 @@ mode_mcchar: {
|
|||||||
.label CHARSET = $9000
|
.label CHARSET = $9000
|
||||||
.label COLORS = $d800
|
.label COLORS = $d800
|
||||||
.label _28 = 7
|
.label _28 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label ch = 5
|
.label ch = 5
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
lda #($ffffffff&CHARSET)/$10000
|
lda #($ffffffff&CHARSET)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||||
@ -1784,7 +1779,8 @@ mode_mcchar: {
|
|||||||
lda cy
|
lda cy
|
||||||
cmp #$19
|
cmp #$19
|
||||||
bne b2
|
bne b2
|
||||||
ldx #0
|
lda #0
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
@ -1793,9 +1789,9 @@ mode_ecmchar: {
|
|||||||
.label CHARSET = $9000
|
.label CHARSET = $9000
|
||||||
.label COLORS = $d800
|
.label COLORS = $d800
|
||||||
.label _28 = 7
|
.label _28 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label ch = 5
|
.label ch = 5
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
lda #($ffffffff&CHARSET)/$10000
|
lda #($ffffffff&CHARSET)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||||
@ -1875,7 +1871,8 @@ mode_ecmchar: {
|
|||||||
lda cy
|
lda cy
|
||||||
cmp #$19
|
cmp #$19
|
||||||
bne b2
|
bne b2
|
||||||
ldx #0
|
lda #0
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
@ -1884,9 +1881,9 @@ mode_stdchar: {
|
|||||||
.label CHARSET = $9000
|
.label CHARSET = $9000
|
||||||
.label COLORS = $d800
|
.label COLORS = $d800
|
||||||
.label _27 = 7
|
.label _27 = 7
|
||||||
.label col = 2
|
.label col = 3
|
||||||
.label ch = 5
|
.label ch = 5
|
||||||
.label cy = 4
|
.label cy = 2
|
||||||
lda #($ffffffff&CHARSET)/$10000
|
lda #($ffffffff&CHARSET)/$10000
|
||||||
sta DTV_GRAPHICS_VIC_BANK
|
sta DTV_GRAPHICS_VIC_BANK
|
||||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||||
@ -1960,12 +1957,13 @@ mode_stdchar: {
|
|||||||
lda cy
|
lda cy
|
||||||
cmp #$19
|
cmp #$19
|
||||||
bne b2
|
bne b2
|
||||||
ldx #0
|
lda #0
|
||||||
|
sta dtv_control
|
||||||
jsr mode_ctrl
|
jsr mode_ctrl
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
print_str_lines: {
|
print_str_lines: {
|
||||||
.label str = 2
|
.label str = 3
|
||||||
lda #<menu.SCREEN
|
lda #<menu.SCREEN
|
||||||
sta print_line_cursor
|
sta print_line_cursor
|
||||||
lda #>menu.SCREEN
|
lda #>menu.SCREEN
|
||||||
@ -2029,7 +2027,7 @@ print_ln: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
print_cls: {
|
print_cls: {
|
||||||
.label sc = 2
|
.label sc = 3
|
||||||
lda #<menu.SCREEN
|
lda #<menu.SCREEN
|
||||||
sta sc
|
sta sc
|
||||||
lda #>menu.SCREEN
|
lda #>menu.SCREEN
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
|||||||
(label) @43
|
(label) @42
|
||||||
(label) @begin
|
(label) @begin
|
||||||
(label) @end
|
(label) @end
|
||||||
(byte*) BGCOL
|
(byte*) BGCOL
|
||||||
@ -154,26 +154,26 @@
|
|||||||
(byte) VIC_RSEL
|
(byte) VIC_RSEL
|
||||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||||
(void()) bitmap_clear()
|
(void()) bitmap_clear()
|
||||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0
|
(word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0
|
||||||
(label) bitmap_clear::@1
|
(label) bitmap_clear::@1
|
||||||
(label) bitmap_clear::@2
|
(label) bitmap_clear::@2
|
||||||
(label) bitmap_clear::@3
|
(label) bitmap_clear::@3
|
||||||
(label) bitmap_clear::@return
|
(label) bitmap_clear::@return
|
||||||
(byte*) bitmap_clear::bitmap
|
(byte*) bitmap_clear::bitmap
|
||||||
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:2 420.59999999999997
|
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:2 1552.0
|
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 1552.0
|
||||||
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:2 204.0
|
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 204.0
|
||||||
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:2 4.0
|
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0
|
||||||
(byte) bitmap_clear::x
|
(byte) bitmap_clear::x
|
||||||
(byte) bitmap_clear::x#1 reg byte x 1501.5
|
(byte) bitmap_clear::x#1 reg byte x 1501.5
|
||||||
(byte) bitmap_clear::x#2 reg byte x 667.3333333333334
|
(byte) bitmap_clear::x#2 reg byte x 667.3333333333334
|
||||||
(byte) bitmap_clear::y
|
(byte) bitmap_clear::y
|
||||||
(byte) bitmap_clear::y#1 y zp ZP_BYTE:4 151.5
|
(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 151.5
|
||||||
(byte) bitmap_clear::y#4 y zp ZP_BYTE:4 33.666666666666664
|
(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 33.666666666666664
|
||||||
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
||||||
(byte~) bitmap_init::$0 reg byte a 202.0
|
(byte~) bitmap_init::$0 reg byte a 202.0
|
||||||
(byte~) bitmap_init::$10 reg byte a 202.0
|
(byte~) bitmap_init::$10 reg byte a 202.0
|
||||||
(byte~) bitmap_init::$6 $6 zp ZP_BYTE:4 101.0
|
(byte~) bitmap_init::$6 $6 zp ZP_BYTE:2 101.0
|
||||||
(byte~) bitmap_init::$7 reg byte a 202.0
|
(byte~) bitmap_init::$7 reg byte a 202.0
|
||||||
(byte~) bitmap_init::$8 reg byte a 202.0
|
(byte~) bitmap_init::$8 reg byte a 202.0
|
||||||
(byte~) bitmap_init::$9 reg byte a 202.0
|
(byte~) bitmap_init::$9 reg byte a 202.0
|
||||||
@ -196,9 +196,9 @@
|
|||||||
(byte) bitmap_init::y#1 reg byte x 151.5
|
(byte) bitmap_init::y#1 reg byte x 151.5
|
||||||
(byte) bitmap_init::y#2 reg byte x 55.090909090909086
|
(byte) bitmap_init::y#2 reg byte x 55.090909090909086
|
||||||
(byte*) bitmap_init::yoffs
|
(byte*) bitmap_init::yoffs
|
||||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:2 202.0
|
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 202.0
|
||||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:2 56.11111111111111
|
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 56.11111111111111
|
||||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:2 101.0
|
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 101.0
|
||||||
(void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1)
|
(void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1)
|
||||||
(label) bitmap_line::@1
|
(label) bitmap_line::@1
|
||||||
(label) bitmap_line::@10
|
(label) bitmap_line::@10
|
||||||
@ -384,12 +384,12 @@
|
|||||||
(byte) bitmap_line_ydxi::yd#1 yd zp ZP_BYTE:8 2.0
|
(byte) bitmap_line_ydxi::yd#1 yd zp ZP_BYTE:8 2.0
|
||||||
(byte) bitmap_line_ydxi::yd#5 yd zp ZP_BYTE:8 143.28571428571428
|
(byte) bitmap_line_ydxi::yd#5 yd zp ZP_BYTE:8 143.28571428571428
|
||||||
(void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y)
|
(void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||||
(word~) bitmap_plot::$0 $0 zp ZP_WORD:2 1.0
|
(word~) bitmap_plot::$0 $0 zp ZP_WORD:3 1.0
|
||||||
(byte~) bitmap_plot::$1 reg byte a 4.0
|
(byte~) bitmap_plot::$1 reg byte a 4.0
|
||||||
(label) bitmap_plot::@return
|
(label) bitmap_plot::@return
|
||||||
(byte*) bitmap_plot::plotter
|
(byte*) bitmap_plot::plotter
|
||||||
(word) bitmap_plot::plotter_x
|
(word) bitmap_plot::plotter_x
|
||||||
(word) bitmap_plot::plotter_x#0 plotter_x zp ZP_WORD:2 2.0
|
(word) bitmap_plot::plotter_x#0 plotter_x zp ZP_WORD:3 2.0
|
||||||
(word) bitmap_plot::plotter_y
|
(word) bitmap_plot::plotter_y
|
||||||
(word) bitmap_plot::plotter_y#0 plotter_y zp ZP_WORD:5 4.0
|
(word) bitmap_plot::plotter_y#0 plotter_y zp ZP_WORD:5 4.0
|
||||||
(byte) bitmap_plot::x
|
(byte) bitmap_plot::x
|
||||||
@ -422,12 +422,11 @@
|
|||||||
(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 2002.0
|
(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 2002.0
|
||||||
(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 1003.0
|
(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 1003.0
|
||||||
(byte) dtv_control
|
(byte) dtv_control
|
||||||
(byte) dtv_control#1 reg byte x 1.2727272727272727
|
(byte) dtv_control#1 dtv_control zp ZP_BYTE:2 1.2727272727272727
|
||||||
(byte) dtv_control#119 reg byte x 1.4946236559139783
|
(byte) dtv_control#114 dtv_control zp ZP_BYTE:2 24.19318181818182
|
||||||
(byte) dtv_control#153 reg byte x 2.0
|
(byte) dtv_control#145 dtv_control zp ZP_BYTE:2 2.0
|
||||||
(byte) dtv_control#18 reg byte x 1.3333333333333333
|
(byte) dtv_control#17 dtv_control zp ZP_BYTE:2 67.33333333333333
|
||||||
(byte) dtv_control#19 reg byte x 35.66666666666666
|
(byte) dtv_control#3 dtv_control zp ZP_BYTE:2 45.3333333333333
|
||||||
(byte) dtv_control#3 reg byte x 45.3333333333333
|
|
||||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||||
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
||||||
(label) keyboard_key_pressed::@2
|
(label) keyboard_key_pressed::@2
|
||||||
@ -437,20 +436,20 @@
|
|||||||
(byte) keyboard_key_pressed::key
|
(byte) keyboard_key_pressed::key
|
||||||
(byte) keyboard_key_pressed::key#20 reg byte y 2.0
|
(byte) keyboard_key_pressed::key#20 reg byte y 2.0
|
||||||
(byte) keyboard_key_pressed::return
|
(byte) keyboard_key_pressed::return
|
||||||
(byte) keyboard_key_pressed::return#0 reg byte a 60.40909090909094
|
(byte) keyboard_key_pressed::return#0 reg byte a 419.1818181818182
|
||||||
(byte) keyboard_key_pressed::return#10 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#10 reg byte a 202.0
|
||||||
(byte) keyboard_key_pressed::return#11 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#11 reg byte a 202.0
|
||||||
(byte) keyboard_key_pressed::return#12 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#12 reg byte a 202.0
|
||||||
(byte) keyboard_key_pressed::return#13 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#13 reg byte a 202.0
|
||||||
(byte) keyboard_key_pressed::return#14 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#14 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#15 reg byte a 4.0
|
(byte) keyboard_key_pressed::return#15 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#16 reg byte a 4.0
|
(byte) keyboard_key_pressed::return#16 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#17 reg byte a 4.0
|
(byte) keyboard_key_pressed::return#17 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#18 reg byte a 4.0
|
(byte) keyboard_key_pressed::return#18 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#19 reg byte a 4.0
|
(byte) keyboard_key_pressed::return#19 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#2 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#2 reg byte a 202.0
|
||||||
(byte) keyboard_key_pressed::return#20 reg byte a 4.0
|
(byte) keyboard_key_pressed::return#20 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#21 reg byte a 4.0
|
(byte) keyboard_key_pressed::return#21 reg byte a 2002.0
|
||||||
(byte) keyboard_key_pressed::return#24 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#24 reg byte a 202.0
|
||||||
(byte) keyboard_key_pressed::return#25 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#25 reg byte a 202.0
|
||||||
(byte) keyboard_key_pressed::return#26 reg byte a 202.0
|
(byte) keyboard_key_pressed::return#26 reg byte a 202.0
|
||||||
@ -537,11 +536,11 @@
|
|||||||
(byte*) menu::SCREEN
|
(byte*) menu::SCREEN
|
||||||
(const byte*) menu::SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 32768
|
(const byte*) menu::SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 32768
|
||||||
(byte*) menu::c
|
(byte*) menu::c
|
||||||
(byte*) menu::c#1 c zp ZP_WORD:2 151.5
|
(byte*) menu::c#1 c zp ZP_WORD:3 151.5
|
||||||
(byte*) menu::c#2 c zp ZP_WORD:2 151.5
|
(byte*) menu::c#2 c zp ZP_WORD:3 151.5
|
||||||
(byte) menu::i
|
(byte) menu::i
|
||||||
(byte) menu::i#1 reg byte y 151.5
|
(byte) menu::i#1 reg byte x 151.5
|
||||||
(byte) menu::i#2 reg byte y 202.0
|
(byte) menu::i#2 reg byte x 202.0
|
||||||
(void()) mode_8bppchunkybmm()
|
(void()) mode_8bppchunkybmm()
|
||||||
(word~) mode_8bppchunkybmm::$23 $23 zp ZP_WORD:13 2002.0
|
(word~) mode_8bppchunkybmm::$23 $23 zp ZP_WORD:13 2002.0
|
||||||
(label) mode_8bppchunkybmm::@1
|
(label) mode_8bppchunkybmm::@1
|
||||||
@ -573,11 +572,11 @@
|
|||||||
(byte) mode_8bppchunkybmm::i#1 reg byte x 151.5
|
(byte) mode_8bppchunkybmm::i#1 reg byte x 151.5
|
||||||
(byte) mode_8bppchunkybmm::i#2 reg byte x 202.0
|
(byte) mode_8bppchunkybmm::i#2 reg byte x 202.0
|
||||||
(word) mode_8bppchunkybmm::x
|
(word) mode_8bppchunkybmm::x
|
||||||
(word) mode_8bppchunkybmm::x#1 x zp ZP_WORD:2 1501.5
|
(word) mode_8bppchunkybmm::x#1 x zp ZP_WORD:3 1501.5
|
||||||
(word) mode_8bppchunkybmm::x#2 x zp ZP_WORD:2 300.29999999999995
|
(word) mode_8bppchunkybmm::x#2 x zp ZP_WORD:3 300.29999999999995
|
||||||
(byte) mode_8bppchunkybmm::y
|
(byte) mode_8bppchunkybmm::y
|
||||||
(byte) mode_8bppchunkybmm::y#1 y zp ZP_BYTE:4 151.5
|
(byte) mode_8bppchunkybmm::y#1 y zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_8bppchunkybmm::y#6 y zp ZP_BYTE:4 92.53846153846155
|
(byte) mode_8bppchunkybmm::y#6 y zp ZP_BYTE:2 92.53846153846155
|
||||||
(void()) mode_8bpppixelcell()
|
(void()) mode_8bpppixelcell()
|
||||||
(byte~) mode_8bpppixelcell::$13 reg byte a 2002.0
|
(byte~) mode_8bpppixelcell::$13 reg byte a 2002.0
|
||||||
(byte~) mode_8bpppixelcell::$14 $14 zp ZP_BYTE:7 1001.0
|
(byte~) mode_8bpppixelcell::$14 $14 zp ZP_BYTE:7 1001.0
|
||||||
@ -607,8 +606,8 @@
|
|||||||
(byte) mode_8bpppixelcell::ax#1 reg byte x 1501.5
|
(byte) mode_8bpppixelcell::ax#1 reg byte x 1501.5
|
||||||
(byte) mode_8bpppixelcell::ax#2 reg byte x 429.0
|
(byte) mode_8bpppixelcell::ax#2 reg byte x 429.0
|
||||||
(byte) mode_8bpppixelcell::ay
|
(byte) mode_8bpppixelcell::ay
|
||||||
(byte) mode_8bpppixelcell::ay#1 ay zp ZP_BYTE:4 151.5
|
(byte) mode_8bpppixelcell::ay#1 ay zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_8bpppixelcell::ay#4 ay zp ZP_BYTE:4 120.29999999999998
|
(byte) mode_8bpppixelcell::ay#4 ay zp ZP_BYTE:2 120.29999999999998
|
||||||
(byte) mode_8bpppixelcell::bits
|
(byte) mode_8bpppixelcell::bits
|
||||||
(byte) mode_8bpppixelcell::bits#0 bits zp ZP_BYTE:8 1001.0
|
(byte) mode_8bpppixelcell::bits#0 bits zp ZP_BYTE:8 1001.0
|
||||||
(byte) mode_8bpppixelcell::bits#1 bits zp ZP_BYTE:8 5000.5
|
(byte) mode_8bpppixelcell::bits#1 bits zp ZP_BYTE:8 5000.5
|
||||||
@ -617,12 +616,12 @@
|
|||||||
(byte) mode_8bpppixelcell::c#2 reg byte a 20002.0
|
(byte) mode_8bpppixelcell::c#2 reg byte a 20002.0
|
||||||
(byte~) mode_8bpppixelcell::c#3 reg byte a 20002.0
|
(byte~) mode_8bpppixelcell::c#3 reg byte a 20002.0
|
||||||
(byte) mode_8bpppixelcell::ch
|
(byte) mode_8bpppixelcell::ch
|
||||||
(byte) mode_8bpppixelcell::ch#1 ch zp ZP_BYTE:4 151.5
|
(byte) mode_8bpppixelcell::ch#1 ch zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_8bpppixelcell::ch#8 ch zp ZP_BYTE:4 11.882352941176471
|
(byte) mode_8bpppixelcell::ch#8 ch zp ZP_BYTE:2 11.882352941176471
|
||||||
(byte*) mode_8bpppixelcell::chargen
|
(byte*) mode_8bpppixelcell::chargen
|
||||||
(byte*) mode_8bpppixelcell::chargen#1 chargen zp ZP_WORD:2 131.4375
|
(byte*) mode_8bpppixelcell::chargen#1 chargen zp ZP_WORD:3 131.4375
|
||||||
(byte*) mode_8bpppixelcell::chargen#2 chargen zp ZP_WORD:2 1552.0
|
(byte*) mode_8bpppixelcell::chargen#2 chargen zp ZP_WORD:3 1552.0
|
||||||
(byte*) mode_8bpppixelcell::chargen#4 chargen zp ZP_WORD:2 202.0
|
(byte*) mode_8bpppixelcell::chargen#4 chargen zp ZP_WORD:3 202.0
|
||||||
(byte) mode_8bpppixelcell::col
|
(byte) mode_8bpppixelcell::col
|
||||||
(byte) mode_8bpppixelcell::col#1 col zp ZP_BYTE:9 3014.857142857143
|
(byte) mode_8bpppixelcell::col#1 col zp ZP_BYTE:9 3014.857142857143
|
||||||
(byte) mode_8bpppixelcell::col#2 col zp ZP_BYTE:9 3875.5
|
(byte) mode_8bpppixelcell::col#2 col zp ZP_BYTE:9 3875.5
|
||||||
@ -635,9 +634,9 @@
|
|||||||
(byte) mode_8bpppixelcell::cr#1 cr zp ZP_BYTE:7 1501.5
|
(byte) mode_8bpppixelcell::cr#1 cr zp ZP_BYTE:7 1501.5
|
||||||
(byte) mode_8bpppixelcell::cr#6 cr zp ZP_BYTE:7 143.0
|
(byte) mode_8bpppixelcell::cr#6 cr zp ZP_BYTE:7 143.0
|
||||||
(byte*) mode_8bpppixelcell::gfxa
|
(byte*) mode_8bpppixelcell::gfxa
|
||||||
(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp ZP_WORD:2 517.3333333333334
|
(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp ZP_WORD:3 517.3333333333334
|
||||||
(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||||
(byte*) mode_8bpppixelcell::gfxb
|
(byte*) mode_8bpppixelcell::gfxb
|
||||||
(byte*) mode_8bpppixelcell::gfxb#1 gfxb zp ZP_WORD:5 2344.8888888888887
|
(byte*) mode_8bpppixelcell::gfxb#1 gfxb zp ZP_WORD:5 2344.8888888888887
|
||||||
(byte*) mode_8bpppixelcell::gfxb#2 gfxb zp ZP_WORD:5 5167.333333333333
|
(byte*) mode_8bpppixelcell::gfxb#2 gfxb zp ZP_WORD:5 5167.333333333333
|
||||||
@ -647,61 +646,57 @@
|
|||||||
(byte) mode_8bpppixelcell::i#1 reg byte x 151.5
|
(byte) mode_8bpppixelcell::i#1 reg byte x 151.5
|
||||||
(byte) mode_8bpppixelcell::i#2 reg byte x 202.0
|
(byte) mode_8bpppixelcell::i#2 reg byte x 202.0
|
||||||
(void()) mode_ctrl()
|
(void()) mode_ctrl()
|
||||||
(byte~) mode_ctrl::$1 reg byte a 202.0
|
(byte~) mode_ctrl::$1 reg byte a 2002.0
|
||||||
|
(byte~) mode_ctrl::$12 reg byte a 2002.0
|
||||||
|
(byte~) mode_ctrl::$16 reg byte a 2002.0
|
||||||
|
(byte~) mode_ctrl::$20 reg byte a 2002.0
|
||||||
|
(byte~) mode_ctrl::$24 reg byte a 2002.0
|
||||||
|
(byte~) mode_ctrl::$28 reg byte a 2002.0
|
||||||
|
(byte~) mode_ctrl::$4 reg byte a 2002.0
|
||||||
|
(byte~) mode_ctrl::$8 reg byte a 2002.0
|
||||||
(label) mode_ctrl::@1
|
(label) mode_ctrl::@1
|
||||||
(label) mode_ctrl::@16
|
(label) mode_ctrl::@10
|
||||||
|
(label) mode_ctrl::@11
|
||||||
|
(label) mode_ctrl::@12
|
||||||
|
(label) mode_ctrl::@13
|
||||||
|
(label) mode_ctrl::@14
|
||||||
|
(label) mode_ctrl::@23
|
||||||
|
(label) mode_ctrl::@24
|
||||||
|
(label) mode_ctrl::@25
|
||||||
|
(label) mode_ctrl::@26
|
||||||
|
(label) mode_ctrl::@27
|
||||||
|
(label) mode_ctrl::@28
|
||||||
|
(label) mode_ctrl::@30
|
||||||
|
(label) mode_ctrl::@32
|
||||||
|
(label) mode_ctrl::@33
|
||||||
|
(label) mode_ctrl::@34
|
||||||
|
(label) mode_ctrl::@35
|
||||||
|
(label) mode_ctrl::@36
|
||||||
|
(label) mode_ctrl::@37
|
||||||
|
(label) mode_ctrl::@38
|
||||||
|
(label) mode_ctrl::@39
|
||||||
(label) mode_ctrl::@4
|
(label) mode_ctrl::@4
|
||||||
|
(label) mode_ctrl::@46
|
||||||
(label) mode_ctrl::@6
|
(label) mode_ctrl::@6
|
||||||
(label) mode_ctrl::@7
|
(label) mode_ctrl::@7
|
||||||
|
(label) mode_ctrl::@8
|
||||||
|
(label) mode_ctrl::@9
|
||||||
(label) mode_ctrl::@return
|
(label) mode_ctrl::@return
|
||||||
(void()) mode_ctrl_keys()
|
(byte) mode_ctrl::ctrl
|
||||||
(byte~) mode_ctrl_keys::$10 reg byte a 4.0
|
(byte) mode_ctrl::ctrl#0 reg byte x 600.5999999999999
|
||||||
(byte~) mode_ctrl_keys::$14 reg byte a 4.0
|
(byte) mode_ctrl::ctrl#1 reg byte x 2002.0
|
||||||
(byte~) mode_ctrl_keys::$18 reg byte a 4.0
|
(byte) mode_ctrl::ctrl#10 reg byte x 800.8
|
||||||
(byte~) mode_ctrl_keys::$2 reg byte a 4.0
|
(byte) mode_ctrl::ctrl#11 reg byte x 800.8
|
||||||
(byte~) mode_ctrl_keys::$22 reg byte a 4.0
|
(byte) mode_ctrl::ctrl#12 reg byte x 800.8
|
||||||
(byte~) mode_ctrl_keys::$26 reg byte a 4.0
|
(byte) mode_ctrl::ctrl#13 reg byte x 800.8
|
||||||
(byte~) mode_ctrl_keys::$6 reg byte a 4.0
|
(byte) mode_ctrl::ctrl#14 reg byte x 576.25
|
||||||
(label) mode_ctrl_keys::@1
|
(byte) mode_ctrl::ctrl#17 reg byte x 800.8
|
||||||
(label) mode_ctrl_keys::@11
|
(byte) mode_ctrl::ctrl#2 reg byte x 2002.0
|
||||||
(label) mode_ctrl_keys::@13
|
(byte) mode_ctrl::ctrl#22 reg byte x 500.5
|
||||||
(label) mode_ctrl_keys::@14
|
(byte) mode_ctrl::ctrl#3 reg byte x 2002.0
|
||||||
(label) mode_ctrl_keys::@15
|
(byte) mode_ctrl::ctrl#4 reg byte x 2002.0
|
||||||
(label) mode_ctrl_keys::@16
|
(byte) mode_ctrl::ctrl#5 reg byte x 2002.0
|
||||||
(label) mode_ctrl_keys::@17
|
(byte) mode_ctrl::ctrl#6 reg byte x 2002.0
|
||||||
(label) mode_ctrl_keys::@18
|
|
||||||
(label) mode_ctrl_keys::@20
|
|
||||||
(label) mode_ctrl_keys::@21
|
|
||||||
(label) mode_ctrl_keys::@22
|
|
||||||
(label) mode_ctrl_keys::@23
|
|
||||||
(label) mode_ctrl_keys::@24
|
|
||||||
(label) mode_ctrl_keys::@25
|
|
||||||
(label) mode_ctrl_keys::@26
|
|
||||||
(label) mode_ctrl_keys::@27
|
|
||||||
(label) mode_ctrl_keys::@3
|
|
||||||
(label) mode_ctrl_keys::@35
|
|
||||||
(label) mode_ctrl_keys::@4
|
|
||||||
(label) mode_ctrl_keys::@5
|
|
||||||
(label) mode_ctrl_keys::@6
|
|
||||||
(label) mode_ctrl_keys::@7
|
|
||||||
(label) mode_ctrl_keys::@8
|
|
||||||
(label) mode_ctrl_keys::@9
|
|
||||||
(label) mode_ctrl_keys::@return
|
|
||||||
(byte) mode_ctrl_keys::ctrl
|
|
||||||
(byte) mode_ctrl_keys::ctrl#0 ctrl zp ZP_BYTE:4 1.2000000000000002
|
|
||||||
(byte) mode_ctrl_keys::ctrl#1 ctrl zp ZP_BYTE:4 4.0
|
|
||||||
(byte) mode_ctrl_keys::ctrl#10 ctrl zp ZP_BYTE:4 1.6
|
|
||||||
(byte) mode_ctrl_keys::ctrl#11 ctrl zp ZP_BYTE:4 1.6
|
|
||||||
(byte) mode_ctrl_keys::ctrl#12 ctrl zp ZP_BYTE:4 1.6
|
|
||||||
(byte) mode_ctrl_keys::ctrl#13 ctrl zp ZP_BYTE:4 1.6
|
|
||||||
(byte) mode_ctrl_keys::ctrl#14 ctrl zp ZP_BYTE:4 2.5
|
|
||||||
(byte) mode_ctrl_keys::ctrl#17 ctrl zp ZP_BYTE:4 1.6
|
|
||||||
(byte) mode_ctrl_keys::ctrl#2 ctrl zp ZP_BYTE:4 4.0
|
|
||||||
(byte) mode_ctrl_keys::ctrl#22 ctrl zp ZP_BYTE:4 1.0
|
|
||||||
(byte) mode_ctrl_keys::ctrl#3 ctrl zp ZP_BYTE:4 4.0
|
|
||||||
(byte) mode_ctrl_keys::ctrl#4 ctrl zp ZP_BYTE:4 4.0
|
|
||||||
(byte) mode_ctrl_keys::ctrl#5 ctrl zp ZP_BYTE:4 4.0
|
|
||||||
(byte) mode_ctrl_keys::ctrl#6 ctrl zp ZP_BYTE:4 4.0
|
|
||||||
(void()) mode_ecmchar()
|
(void()) mode_ecmchar()
|
||||||
(byte~) mode_ecmchar::$25 reg byte a 2002.0
|
(byte~) mode_ecmchar::$25 reg byte a 2002.0
|
||||||
(byte~) mode_ecmchar::$26 reg byte a 2002.0
|
(byte~) mode_ecmchar::$26 reg byte a 2002.0
|
||||||
@ -727,15 +722,15 @@
|
|||||||
(byte*) mode_ecmchar::ch#2 ch zp ZP_WORD:5 310.4
|
(byte*) mode_ecmchar::ch#2 ch zp ZP_WORD:5 310.4
|
||||||
(byte*) mode_ecmchar::ch#3 ch zp ZP_WORD:5 202.0
|
(byte*) mode_ecmchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||||
(byte*) mode_ecmchar::col
|
(byte*) mode_ecmchar::col
|
||||||
(byte*) mode_ecmchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
(byte*) mode_ecmchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||||
(byte*) mode_ecmchar::col#2 col zp ZP_WORD:2 776.0
|
(byte*) mode_ecmchar::col#2 col zp ZP_WORD:3 776.0
|
||||||
(byte*) mode_ecmchar::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_ecmchar::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_ecmchar::cx
|
(byte) mode_ecmchar::cx
|
||||||
(byte) mode_ecmchar::cx#1 reg byte x 1501.5
|
(byte) mode_ecmchar::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_ecmchar::cx#2 reg byte x 364.0
|
(byte) mode_ecmchar::cx#2 reg byte x 364.0
|
||||||
(byte) mode_ecmchar::cy
|
(byte) mode_ecmchar::cy
|
||||||
(byte) mode_ecmchar::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_ecmchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_ecmchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
(byte) mode_ecmchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||||
(byte) mode_ecmchar::i
|
(byte) mode_ecmchar::i
|
||||||
(byte) mode_ecmchar::i#1 reg byte x 151.5
|
(byte) mode_ecmchar::i#1 reg byte x 151.5
|
||||||
(byte) mode_ecmchar::i#2 reg byte x 202.0
|
(byte) mode_ecmchar::i#2 reg byte x 202.0
|
||||||
@ -761,15 +756,15 @@
|
|||||||
(byte*) mode_hicolecmchar::ch#2 ch zp ZP_WORD:5 388.0
|
(byte*) mode_hicolecmchar::ch#2 ch zp ZP_WORD:5 388.0
|
||||||
(byte*) mode_hicolecmchar::ch#3 ch zp ZP_WORD:5 202.0
|
(byte*) mode_hicolecmchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||||
(byte*) mode_hicolecmchar::col
|
(byte*) mode_hicolecmchar::col
|
||||||
(byte*) mode_hicolecmchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
(byte*) mode_hicolecmchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||||
(byte*) mode_hicolecmchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
(byte*) mode_hicolecmchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||||
(byte*) mode_hicolecmchar::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_hicolecmchar::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_hicolecmchar::cx
|
(byte) mode_hicolecmchar::cx
|
||||||
(byte) mode_hicolecmchar::cx#1 reg byte x 1501.5
|
(byte) mode_hicolecmchar::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_hicolecmchar::cx#2 reg byte x 333.6666666666667
|
(byte) mode_hicolecmchar::cx#2 reg byte x 333.6666666666667
|
||||||
(byte) mode_hicolecmchar::cy
|
(byte) mode_hicolecmchar::cy
|
||||||
(byte) mode_hicolecmchar::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_hicolecmchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_hicolecmchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
(byte) mode_hicolecmchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||||
(byte) mode_hicolecmchar::i
|
(byte) mode_hicolecmchar::i
|
||||||
(byte) mode_hicolecmchar::i#1 reg byte x 151.5
|
(byte) mode_hicolecmchar::i#1 reg byte x 151.5
|
||||||
(byte) mode_hicolecmchar::i#2 reg byte x 202.0
|
(byte) mode_hicolecmchar::i#2 reg byte x 202.0
|
||||||
@ -797,15 +792,15 @@
|
|||||||
(byte*) mode_hicolmcchar::ch#2 ch zp ZP_WORD:5 388.0
|
(byte*) mode_hicolmcchar::ch#2 ch zp ZP_WORD:5 388.0
|
||||||
(byte*) mode_hicolmcchar::ch#3 ch zp ZP_WORD:5 202.0
|
(byte*) mode_hicolmcchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||||
(byte*) mode_hicolmcchar::col
|
(byte*) mode_hicolmcchar::col
|
||||||
(byte*) mode_hicolmcchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
(byte*) mode_hicolmcchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||||
(byte*) mode_hicolmcchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
(byte*) mode_hicolmcchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||||
(byte*) mode_hicolmcchar::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_hicolmcchar::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_hicolmcchar::cx
|
(byte) mode_hicolmcchar::cx
|
||||||
(byte) mode_hicolmcchar::cx#1 reg byte x 1501.5
|
(byte) mode_hicolmcchar::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_hicolmcchar::cx#2 reg byte x 333.6666666666667
|
(byte) mode_hicolmcchar::cx#2 reg byte x 333.6666666666667
|
||||||
(byte) mode_hicolmcchar::cy
|
(byte) mode_hicolmcchar::cy
|
||||||
(byte) mode_hicolmcchar::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_hicolmcchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_hicolmcchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
(byte) mode_hicolmcchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||||
(byte) mode_hicolmcchar::i
|
(byte) mode_hicolmcchar::i
|
||||||
(byte) mode_hicolmcchar::i#1 reg byte x 151.5
|
(byte) mode_hicolmcchar::i#1 reg byte x 151.5
|
||||||
(byte) mode_hicolmcchar::i#2 reg byte x 202.0
|
(byte) mode_hicolmcchar::i#2 reg byte x 202.0
|
||||||
@ -833,15 +828,15 @@
|
|||||||
(byte*) mode_hicolstdchar::ch#2 ch zp ZP_WORD:5 388.0
|
(byte*) mode_hicolstdchar::ch#2 ch zp ZP_WORD:5 388.0
|
||||||
(byte*) mode_hicolstdchar::ch#3 ch zp ZP_WORD:5 202.0
|
(byte*) mode_hicolstdchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||||
(byte*) mode_hicolstdchar::col
|
(byte*) mode_hicolstdchar::col
|
||||||
(byte*) mode_hicolstdchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
(byte*) mode_hicolstdchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||||
(byte*) mode_hicolstdchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
(byte*) mode_hicolstdchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||||
(byte*) mode_hicolstdchar::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_hicolstdchar::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_hicolstdchar::cx
|
(byte) mode_hicolstdchar::cx
|
||||||
(byte) mode_hicolstdchar::cx#1 reg byte x 1501.5
|
(byte) mode_hicolstdchar::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_hicolstdchar::cx#2 reg byte x 333.6666666666667
|
(byte) mode_hicolstdchar::cx#2 reg byte x 333.6666666666667
|
||||||
(byte) mode_hicolstdchar::cy
|
(byte) mode_hicolstdchar::cy
|
||||||
(byte) mode_hicolstdchar::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_hicolstdchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_hicolstdchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
(byte) mode_hicolstdchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||||
(byte) mode_hicolstdchar::i
|
(byte) mode_hicolstdchar::i
|
||||||
(byte) mode_hicolstdchar::i#1 reg byte x 151.5
|
(byte) mode_hicolstdchar::i#1 reg byte x 151.5
|
||||||
(byte) mode_hicolstdchar::i#2 reg byte x 202.0
|
(byte) mode_hicolstdchar::i#2 reg byte x 202.0
|
||||||
@ -872,15 +867,15 @@
|
|||||||
(byte*) mode_mcchar::ch#2 ch zp ZP_WORD:5 310.4
|
(byte*) mode_mcchar::ch#2 ch zp ZP_WORD:5 310.4
|
||||||
(byte*) mode_mcchar::ch#3 ch zp ZP_WORD:5 202.0
|
(byte*) mode_mcchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||||
(byte*) mode_mcchar::col
|
(byte*) mode_mcchar::col
|
||||||
(byte*) mode_mcchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
(byte*) mode_mcchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||||
(byte*) mode_mcchar::col#2 col zp ZP_WORD:2 776.0
|
(byte*) mode_mcchar::col#2 col zp ZP_WORD:3 776.0
|
||||||
(byte*) mode_mcchar::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_mcchar::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_mcchar::cx
|
(byte) mode_mcchar::cx
|
||||||
(byte) mode_mcchar::cx#1 reg byte x 1501.5
|
(byte) mode_mcchar::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_mcchar::cx#2 reg byte x 364.0
|
(byte) mode_mcchar::cx#2 reg byte x 364.0
|
||||||
(byte) mode_mcchar::cy
|
(byte) mode_mcchar::cy
|
||||||
(byte) mode_mcchar::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_mcchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_mcchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
(byte) mode_mcchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||||
(byte) mode_mcchar::i
|
(byte) mode_mcchar::i
|
||||||
(byte) mode_mcchar::i#1 reg byte x 151.5
|
(byte) mode_mcchar::i#1 reg byte x 151.5
|
||||||
(byte) mode_mcchar::i#2 reg byte x 202.0
|
(byte) mode_mcchar::i#2 reg byte x 202.0
|
||||||
@ -911,32 +906,32 @@
|
|||||||
(byte) mode_sixsfred::ax#1 reg byte x 1501.5
|
(byte) mode_sixsfred::ax#1 reg byte x 1501.5
|
||||||
(byte) mode_sixsfred::ax#2 reg byte x 400.4
|
(byte) mode_sixsfred::ax#2 reg byte x 400.4
|
||||||
(byte) mode_sixsfred::ay
|
(byte) mode_sixsfred::ay
|
||||||
(byte) mode_sixsfred::ay#1 ay zp ZP_BYTE:4 151.5
|
(byte) mode_sixsfred::ay#1 ay zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_sixsfred::ay#4 ay zp ZP_BYTE:4 150.375
|
(byte) mode_sixsfred::ay#4 ay zp ZP_BYTE:2 150.375
|
||||||
(byte) mode_sixsfred::bx
|
(byte) mode_sixsfred::bx
|
||||||
(byte) mode_sixsfred::bx#1 reg byte x 1501.5
|
(byte) mode_sixsfred::bx#1 reg byte x 1501.5
|
||||||
(byte) mode_sixsfred::bx#2 reg byte x 667.3333333333334
|
(byte) mode_sixsfred::bx#2 reg byte x 667.3333333333334
|
||||||
(byte) mode_sixsfred::by
|
(byte) mode_sixsfred::by
|
||||||
(byte) mode_sixsfred::by#1 by zp ZP_BYTE:4 151.5
|
(byte) mode_sixsfred::by#1 by zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_sixsfred::by#4 by zp ZP_BYTE:4 33.666666666666664
|
(byte) mode_sixsfred::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||||
(byte*) mode_sixsfred::col
|
(byte*) mode_sixsfred::col
|
||||||
(byte*) mode_sixsfred::col#1 col zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_sixsfred::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_sixsfred::col#2 col zp ZP_WORD:2 776.0
|
(byte*) mode_sixsfred::col#2 col zp ZP_WORD:3 776.0
|
||||||
(byte*) mode_sixsfred::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_sixsfred::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_sixsfred::cx
|
(byte) mode_sixsfred::cx
|
||||||
(byte) mode_sixsfred::cx#1 reg byte x 1501.5
|
(byte) mode_sixsfred::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_sixsfred::cx#2 reg byte x 600.5999999999999
|
(byte) mode_sixsfred::cx#2 reg byte x 600.5999999999999
|
||||||
(byte) mode_sixsfred::cy
|
(byte) mode_sixsfred::cy
|
||||||
(byte) mode_sixsfred::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_sixsfred::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_sixsfred::cy#4 cy zp ZP_BYTE:4 150.375
|
(byte) mode_sixsfred::cy#4 cy zp ZP_BYTE:2 150.375
|
||||||
(byte*) mode_sixsfred::gfxa
|
(byte*) mode_sixsfred::gfxa
|
||||||
(byte*) mode_sixsfred::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_sixsfred::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_sixsfred::gfxa#2 gfxa zp ZP_WORD:2 776.0
|
(byte*) mode_sixsfred::gfxa#2 gfxa zp ZP_WORD:3 776.0
|
||||||
(byte*) mode_sixsfred::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
(byte*) mode_sixsfred::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||||
(byte*) mode_sixsfred::gfxb
|
(byte*) mode_sixsfred::gfxb
|
||||||
(byte*) mode_sixsfred::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_sixsfred::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_sixsfred::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
(byte*) mode_sixsfred::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||||
(byte*) mode_sixsfred::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
(byte*) mode_sixsfred::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||||
(byte) mode_sixsfred::i
|
(byte) mode_sixsfred::i
|
||||||
(byte) mode_sixsfred::i#1 reg byte x 151.5
|
(byte) mode_sixsfred::i#1 reg byte x 151.5
|
||||||
(byte) mode_sixsfred::i#2 reg byte x 202.0
|
(byte) mode_sixsfred::i#2 reg byte x 202.0
|
||||||
@ -973,32 +968,32 @@
|
|||||||
(byte) mode_sixsfred2::ax#1 reg byte x 1501.5
|
(byte) mode_sixsfred2::ax#1 reg byte x 1501.5
|
||||||
(byte) mode_sixsfred2::ax#2 reg byte x 400.4
|
(byte) mode_sixsfred2::ax#2 reg byte x 400.4
|
||||||
(byte) mode_sixsfred2::ay
|
(byte) mode_sixsfred2::ay
|
||||||
(byte) mode_sixsfred2::ay#1 ay zp ZP_BYTE:4 151.5
|
(byte) mode_sixsfred2::ay#1 ay zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_sixsfred2::ay#4 ay zp ZP_BYTE:4 150.375
|
(byte) mode_sixsfred2::ay#4 ay zp ZP_BYTE:2 150.375
|
||||||
(byte) mode_sixsfred2::bx
|
(byte) mode_sixsfred2::bx
|
||||||
(byte) mode_sixsfred2::bx#1 reg byte x 1501.5
|
(byte) mode_sixsfred2::bx#1 reg byte x 1501.5
|
||||||
(byte) mode_sixsfred2::bx#2 reg byte x 667.3333333333334
|
(byte) mode_sixsfred2::bx#2 reg byte x 667.3333333333334
|
||||||
(byte) mode_sixsfred2::by
|
(byte) mode_sixsfred2::by
|
||||||
(byte) mode_sixsfred2::by#1 by zp ZP_BYTE:4 151.5
|
(byte) mode_sixsfred2::by#1 by zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_sixsfred2::by#4 by zp ZP_BYTE:4 33.666666666666664
|
(byte) mode_sixsfred2::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||||
(byte*) mode_sixsfred2::col
|
(byte*) mode_sixsfred2::col
|
||||||
(byte*) mode_sixsfred2::col#1 col zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_sixsfred2::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_sixsfred2::col#2 col zp ZP_WORD:2 517.3333333333334
|
(byte*) mode_sixsfred2::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||||
(byte*) mode_sixsfred2::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_sixsfred2::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_sixsfred2::cx
|
(byte) mode_sixsfred2::cx
|
||||||
(byte) mode_sixsfred2::cx#1 reg byte x 1501.5
|
(byte) mode_sixsfred2::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_sixsfred2::cx#2 reg byte x 429.0
|
(byte) mode_sixsfred2::cx#2 reg byte x 429.0
|
||||||
(byte) mode_sixsfred2::cy
|
(byte) mode_sixsfred2::cy
|
||||||
(byte) mode_sixsfred2::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_sixsfred2::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_sixsfred2::cy#4 cy zp ZP_BYTE:4 120.29999999999998
|
(byte) mode_sixsfred2::cy#4 cy zp ZP_BYTE:2 120.29999999999998
|
||||||
(byte*) mode_sixsfred2::gfxa
|
(byte*) mode_sixsfred2::gfxa
|
||||||
(byte*) mode_sixsfred2::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_sixsfred2::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_sixsfred2::gfxa#2 gfxa zp ZP_WORD:2 776.0
|
(byte*) mode_sixsfred2::gfxa#2 gfxa zp ZP_WORD:3 776.0
|
||||||
(byte*) mode_sixsfred2::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
(byte*) mode_sixsfred2::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||||
(byte*) mode_sixsfred2::gfxb
|
(byte*) mode_sixsfred2::gfxb
|
||||||
(byte*) mode_sixsfred2::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_sixsfred2::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_sixsfred2::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
(byte*) mode_sixsfred2::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||||
(byte*) mode_sixsfred2::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
(byte*) mode_sixsfred2::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||||
(byte) mode_sixsfred2::i
|
(byte) mode_sixsfred2::i
|
||||||
(byte) mode_sixsfred2::i#1 reg byte x 151.5
|
(byte) mode_sixsfred2::i#1 reg byte x 151.5
|
||||||
(byte) mode_sixsfred2::i#2 reg byte x 202.0
|
(byte) mode_sixsfred2::i#2 reg byte x 202.0
|
||||||
@ -1026,9 +1021,9 @@
|
|||||||
(byte*) mode_stdbitmap::SCREEN
|
(byte*) mode_stdbitmap::SCREEN
|
||||||
(const byte*) mode_stdbitmap::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 16384
|
(const byte*) mode_stdbitmap::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 16384
|
||||||
(byte*) mode_stdbitmap::ch
|
(byte*) mode_stdbitmap::ch
|
||||||
(byte*) mode_stdbitmap::ch#1 ch zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_stdbitmap::ch#1 ch zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_stdbitmap::ch#2 ch zp ZP_WORD:2 443.42857142857144
|
(byte*) mode_stdbitmap::ch#2 ch zp ZP_WORD:3 443.42857142857144
|
||||||
(byte*) mode_stdbitmap::ch#3 ch zp ZP_WORD:2 202.0
|
(byte*) mode_stdbitmap::ch#3 ch zp ZP_WORD:3 202.0
|
||||||
(byte) mode_stdbitmap::col
|
(byte) mode_stdbitmap::col
|
||||||
(byte) mode_stdbitmap::col#0 reg byte y 1501.5
|
(byte) mode_stdbitmap::col#0 reg byte y 1501.5
|
||||||
(byte) mode_stdbitmap::col2
|
(byte) mode_stdbitmap::col2
|
||||||
@ -1037,14 +1032,14 @@
|
|||||||
(byte) mode_stdbitmap::cx#1 reg byte x 1501.5
|
(byte) mode_stdbitmap::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_stdbitmap::cx#2 reg byte x 375.375
|
(byte) mode_stdbitmap::cx#2 reg byte x 375.375
|
||||||
(byte) mode_stdbitmap::cy
|
(byte) mode_stdbitmap::cy
|
||||||
(byte) mode_stdbitmap::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_stdbitmap::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_stdbitmap::cy#4 cy zp ZP_BYTE:4 109.36363636363637
|
(byte) mode_stdbitmap::cy#4 cy zp ZP_BYTE:2 109.36363636363637
|
||||||
(byte) mode_stdbitmap::i
|
(byte) mode_stdbitmap::i
|
||||||
(byte) mode_stdbitmap::i#1 reg byte x 151.5
|
(byte) mode_stdbitmap::i#1 reg byte x 151.5
|
||||||
(byte) mode_stdbitmap::i#2 reg byte x 202.0
|
(byte) mode_stdbitmap::i#2 reg byte x 202.0
|
||||||
(byte) mode_stdbitmap::l
|
(byte) mode_stdbitmap::l
|
||||||
(byte) mode_stdbitmap::l#1 l zp ZP_BYTE:4 151.5
|
(byte) mode_stdbitmap::l#1 l zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_stdbitmap::l#2 l zp ZP_BYTE:4 100.99999999999999
|
(byte) mode_stdbitmap::l#2 l zp ZP_BYTE:2 100.99999999999999
|
||||||
(byte) mode_stdbitmap::lines_cnt
|
(byte) mode_stdbitmap::lines_cnt
|
||||||
(const byte) mode_stdbitmap::lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word/dword/signed dword) 9
|
(const byte) mode_stdbitmap::lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||||
(byte[]) mode_stdbitmap::lines_x
|
(byte[]) mode_stdbitmap::lines_x
|
||||||
@ -1076,15 +1071,15 @@
|
|||||||
(byte*) mode_stdchar::ch#2 ch zp ZP_WORD:5 310.4
|
(byte*) mode_stdchar::ch#2 ch zp ZP_WORD:5 310.4
|
||||||
(byte*) mode_stdchar::ch#3 ch zp ZP_WORD:5 202.0
|
(byte*) mode_stdchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||||
(byte*) mode_stdchar::col
|
(byte*) mode_stdchar::col
|
||||||
(byte*) mode_stdchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
(byte*) mode_stdchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||||
(byte*) mode_stdchar::col#2 col zp ZP_WORD:2 776.0
|
(byte*) mode_stdchar::col#2 col zp ZP_WORD:3 776.0
|
||||||
(byte*) mode_stdchar::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_stdchar::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_stdchar::cx
|
(byte) mode_stdchar::cx
|
||||||
(byte) mode_stdchar::cx#1 reg byte x 1501.5
|
(byte) mode_stdchar::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_stdchar::cx#2 reg byte x 364.0
|
(byte) mode_stdchar::cx#2 reg byte x 364.0
|
||||||
(byte) mode_stdchar::cy
|
(byte) mode_stdchar::cy
|
||||||
(byte) mode_stdchar::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_stdchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_stdchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
(byte) mode_stdchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||||
(byte) mode_stdchar::i
|
(byte) mode_stdchar::i
|
||||||
(byte) mode_stdchar::i#1 reg byte x 151.5
|
(byte) mode_stdchar::i#1 reg byte x 151.5
|
||||||
(byte) mode_stdchar::i#2 reg byte x 202.0
|
(byte) mode_stdchar::i#2 reg byte x 202.0
|
||||||
@ -1120,34 +1115,34 @@
|
|||||||
(byte) mode_twoplanebitmap::ax#1 reg byte x 1501.5
|
(byte) mode_twoplanebitmap::ax#1 reg byte x 1501.5
|
||||||
(byte) mode_twoplanebitmap::ax#2 reg byte x 250.25
|
(byte) mode_twoplanebitmap::ax#2 reg byte x 250.25
|
||||||
(byte) mode_twoplanebitmap::ay
|
(byte) mode_twoplanebitmap::ay
|
||||||
(byte) mode_twoplanebitmap::ay#1 ay zp ZP_BYTE:4 151.5
|
(byte) mode_twoplanebitmap::ay#1 ay zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_twoplanebitmap::ay#4 ay zp ZP_BYTE:4 109.36363636363637
|
(byte) mode_twoplanebitmap::ay#4 ay zp ZP_BYTE:2 109.36363636363637
|
||||||
(byte) mode_twoplanebitmap::bx
|
(byte) mode_twoplanebitmap::bx
|
||||||
(byte) mode_twoplanebitmap::bx#1 reg byte x 1501.5
|
(byte) mode_twoplanebitmap::bx#1 reg byte x 1501.5
|
||||||
(byte) mode_twoplanebitmap::bx#2 reg byte x 667.3333333333334
|
(byte) mode_twoplanebitmap::bx#2 reg byte x 667.3333333333334
|
||||||
(byte) mode_twoplanebitmap::by
|
(byte) mode_twoplanebitmap::by
|
||||||
(byte) mode_twoplanebitmap::by#1 by zp ZP_BYTE:4 151.5
|
(byte) mode_twoplanebitmap::by#1 by zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_twoplanebitmap::by#4 by zp ZP_BYTE:4 33.666666666666664
|
(byte) mode_twoplanebitmap::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||||
(byte*) mode_twoplanebitmap::col
|
(byte*) mode_twoplanebitmap::col
|
||||||
(byte*) mode_twoplanebitmap::col#1 col zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_twoplanebitmap::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_twoplanebitmap::col#2 col zp ZP_WORD:2 517.3333333333334
|
(byte*) mode_twoplanebitmap::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||||
(byte*) mode_twoplanebitmap::col#3 col zp ZP_WORD:2 202.0
|
(byte*) mode_twoplanebitmap::col#3 col zp ZP_WORD:3 202.0
|
||||||
(byte) mode_twoplanebitmap::cx
|
(byte) mode_twoplanebitmap::cx
|
||||||
(byte) mode_twoplanebitmap::cx#1 reg byte x 1501.5
|
(byte) mode_twoplanebitmap::cx#1 reg byte x 1501.5
|
||||||
(byte) mode_twoplanebitmap::cx#2 reg byte x 429.0
|
(byte) mode_twoplanebitmap::cx#2 reg byte x 429.0
|
||||||
(byte) mode_twoplanebitmap::cy
|
(byte) mode_twoplanebitmap::cy
|
||||||
(byte) mode_twoplanebitmap::cy#1 cy zp ZP_BYTE:4 151.5
|
(byte) mode_twoplanebitmap::cy#1 cy zp ZP_BYTE:2 151.5
|
||||||
(byte) mode_twoplanebitmap::cy#4 cy zp ZP_BYTE:4 120.29999999999998
|
(byte) mode_twoplanebitmap::cy#4 cy zp ZP_BYTE:2 120.29999999999998
|
||||||
(byte*) mode_twoplanebitmap::gfxa
|
(byte*) mode_twoplanebitmap::gfxa
|
||||||
(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp ZP_WORD:2 2002.0
|
(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp ZP_WORD:3 2002.0
|
||||||
(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp ZP_WORD:2 2002.0
|
(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp ZP_WORD:3 2002.0
|
||||||
(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp ZP_WORD:2 1021.2
|
(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp ZP_WORD:3 1021.2
|
||||||
(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp ZP_WORD:2 202.0
|
(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp ZP_WORD:3 202.0
|
||||||
(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp ZP_WORD:2 620.8
|
(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp ZP_WORD:3 620.8
|
||||||
(byte*) mode_twoplanebitmap::gfxb
|
(byte*) mode_twoplanebitmap::gfxb
|
||||||
(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||||
(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||||
(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||||
(byte) mode_twoplanebitmap::i
|
(byte) mode_twoplanebitmap::i
|
||||||
(byte) mode_twoplanebitmap::i#1 reg byte x 151.5
|
(byte) mode_twoplanebitmap::i#1 reg byte x 151.5
|
||||||
(byte) mode_twoplanebitmap::i#2 reg byte x 202.0
|
(byte) mode_twoplanebitmap::i#2 reg byte x 202.0
|
||||||
@ -1161,8 +1156,8 @@
|
|||||||
(label) print_cls::@1
|
(label) print_cls::@1
|
||||||
(label) print_cls::@return
|
(label) print_cls::@return
|
||||||
(byte*) print_cls::sc
|
(byte*) print_cls::sc
|
||||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 151.5
|
(byte*) print_cls::sc#1 sc zp ZP_WORD:3 151.5
|
||||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 151.5
|
(byte*) print_cls::sc#2 sc zp ZP_WORD:3 151.5
|
||||||
(byte*) print_line_cursor
|
(byte*) print_line_cursor
|
||||||
(byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:13 8.583333333333332
|
(byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:13 8.583333333333332
|
||||||
(byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:13 2004.0
|
(byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:13 2004.0
|
||||||
@ -1184,17 +1179,17 @@
|
|||||||
(byte) print_str_lines::ch
|
(byte) print_str_lines::ch
|
||||||
(byte) print_str_lines::ch#0 reg byte a 667.3333333333334
|
(byte) print_str_lines::ch#0 reg byte a 667.3333333333334
|
||||||
(byte*) print_str_lines::str
|
(byte*) print_str_lines::str
|
||||||
(byte*) print_str_lines::str#0 str zp ZP_WORD:2 233.66666666666669
|
(byte*) print_str_lines::str#0 str zp ZP_WORD:3 233.66666666666669
|
||||||
(byte*) print_str_lines::str#2 str zp ZP_WORD:2 151.5
|
(byte*) print_str_lines::str#2 str zp ZP_WORD:3 151.5
|
||||||
(byte*) print_str_lines::str#3 str zp ZP_WORD:2 1552.0
|
(byte*) print_str_lines::str#3 str zp ZP_WORD:3 1552.0
|
||||||
|
|
||||||
reg byte x [ dtv_control#1 dtv_control#3 dtv_control#119 dtv_control#153 dtv_control#19 dtv_control#18 ]
|
zp ZP_BYTE:2 [ dtv_control#1 dtv_control#3 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ]
|
||||||
reg byte y [ menu::i#2 menu::i#1 ]
|
reg byte x [ menu::i#2 menu::i#1 ]
|
||||||
zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ]
|
zp ZP_WORD:3 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ]
|
||||||
reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ]
|
reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ]
|
||||||
zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 mode_ctrl_keys::ctrl#14 mode_ctrl_keys::ctrl#22 mode_ctrl_keys::ctrl#6 mode_ctrl_keys::ctrl#13 mode_ctrl_keys::ctrl#5 mode_ctrl_keys::ctrl#12 mode_ctrl_keys::ctrl#4 mode_ctrl_keys::ctrl#11 mode_ctrl_keys::ctrl#3 mode_ctrl_keys::ctrl#10 mode_ctrl_keys::ctrl#2 mode_ctrl_keys::ctrl#17 mode_ctrl_keys::ctrl#1 mode_ctrl_keys::ctrl#0 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ]
|
|
||||||
reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ]
|
reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ]
|
||||||
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ]
|
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ]
|
||||||
|
reg byte x [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
|
||||||
reg byte y [ keyboard_key_pressed::key#20 ]
|
reg byte y [ keyboard_key_pressed::key#20 ]
|
||||||
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||||
reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ]
|
reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ]
|
||||||
@ -1272,19 +1267,19 @@ reg byte a [ mode_8bppchunkybmm::c#0 ]
|
|||||||
reg byte a [ keyboard_key_pressed::return#14 ]
|
reg byte a [ keyboard_key_pressed::return#14 ]
|
||||||
reg byte a [ mode_ctrl::$1 ]
|
reg byte a [ mode_ctrl::$1 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#15 ]
|
reg byte a [ keyboard_key_pressed::return#15 ]
|
||||||
reg byte a [ mode_ctrl_keys::$2 ]
|
reg byte a [ mode_ctrl::$4 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#16 ]
|
reg byte a [ keyboard_key_pressed::return#16 ]
|
||||||
reg byte a [ mode_ctrl_keys::$6 ]
|
reg byte a [ mode_ctrl::$8 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#17 ]
|
reg byte a [ keyboard_key_pressed::return#17 ]
|
||||||
reg byte a [ mode_ctrl_keys::$10 ]
|
reg byte a [ mode_ctrl::$12 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#18 ]
|
reg byte a [ keyboard_key_pressed::return#18 ]
|
||||||
reg byte a [ mode_ctrl_keys::$14 ]
|
reg byte a [ mode_ctrl::$16 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#19 ]
|
reg byte a [ keyboard_key_pressed::return#19 ]
|
||||||
reg byte a [ mode_ctrl_keys::$18 ]
|
reg byte a [ mode_ctrl::$20 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#20 ]
|
reg byte a [ keyboard_key_pressed::return#20 ]
|
||||||
reg byte a [ mode_ctrl_keys::$22 ]
|
reg byte a [ mode_ctrl::$24 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#21 ]
|
reg byte a [ keyboard_key_pressed::return#21 ]
|
||||||
reg byte a [ mode_ctrl_keys::$26 ]
|
reg byte a [ mode_ctrl::$28 ]
|
||||||
reg byte a [ keyboard_key_pressed::rowidx#0 ]
|
reg byte a [ keyboard_key_pressed::rowidx#0 ]
|
||||||
reg byte y [ keyboard_matrix_read::rowid#0 ]
|
reg byte y [ keyboard_matrix_read::rowid#0 ]
|
||||||
reg byte a [ keyboard_matrix_read::return#2 ]
|
reg byte a [ keyboard_matrix_read::return#2 ]
|
||||||
|
46
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.asm
Normal file
46
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.asm
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
.pc = $801 "Basic"
|
||||||
|
:BasicUpstart(main)
|
||||||
|
.pc = $80d "Program"
|
||||||
|
.label BORDERCOL = $d020
|
||||||
|
.label SCREEN = $400
|
||||||
|
jsr main
|
||||||
|
main: {
|
||||||
|
jsr print_cls
|
||||||
|
jsr mode_ctrl
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
mode_ctrl: {
|
||||||
|
b2:
|
||||||
|
lda BORDERCOL
|
||||||
|
cmp #$ff
|
||||||
|
bne b4
|
||||||
|
lda #2
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b2
|
||||||
|
b4:
|
||||||
|
lda #3
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b2
|
||||||
|
}
|
||||||
|
print_cls: {
|
||||||
|
.label sc = 2
|
||||||
|
lda #<SCREEN
|
||||||
|
sta sc
|
||||||
|
lda #>SCREEN
|
||||||
|
sta sc+1
|
||||||
|
b1:
|
||||||
|
lda #' '
|
||||||
|
ldy #0
|
||||||
|
sta (sc),y
|
||||||
|
inc sc
|
||||||
|
bne !+
|
||||||
|
inc sc+1
|
||||||
|
!:
|
||||||
|
lda sc+1
|
||||||
|
cmp #>SCREEN+$3e8
|
||||||
|
bne b1
|
||||||
|
lda sc
|
||||||
|
cmp #<SCREEN+$3e8
|
||||||
|
bne b1
|
||||||
|
rts
|
||||||
|
}
|
51
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.cfg
Normal file
51
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.cfg
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
@begin: scope:[] from
|
||||||
|
[0] phi() [ ] ( )
|
||||||
|
to:@3
|
||||||
|
@3: scope:[] from @begin
|
||||||
|
[1] phi() [ ] ( )
|
||||||
|
[2] call main param-assignment [ ] ( )
|
||||||
|
to:@end
|
||||||
|
@end: scope:[] from @3
|
||||||
|
[3] phi() [ ] ( )
|
||||||
|
main: scope:[main] from @3
|
||||||
|
[4] phi() [ ] ( main:2 [ ] )
|
||||||
|
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||||
|
to:main::@1
|
||||||
|
main::@1: scope:[main] from main
|
||||||
|
[6] phi() [ ] ( main:2 [ ] )
|
||||||
|
[7] call mode_ctrl param-assignment [ ] ( main:2 [ ] )
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main::@1
|
||||||
|
[8] return [ ] ( main:2 [ ] )
|
||||||
|
to:@return
|
||||||
|
mode_ctrl: scope:[mode_ctrl] from main::@1
|
||||||
|
[9] phi() [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@1: scope:[mode_ctrl] from mode_ctrl mode_ctrl::@4 mode_ctrl::@8
|
||||||
|
[10] if(true) goto mode_ctrl::@2 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@return
|
||||||
|
mode_ctrl::@return: scope:[mode_ctrl] from mode_ctrl::@1
|
||||||
|
[11] return [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:@return
|
||||||
|
mode_ctrl::@2: scope:[mode_ctrl] from mode_ctrl::@1
|
||||||
|
[12] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) [ mode_ctrl::before#0 ] ( main:2::mode_ctrl:7 [ mode_ctrl::before#0 ] )
|
||||||
|
[13] if((byte) mode_ctrl::before#0!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@8
|
||||||
|
mode_ctrl::@8: scope:[mode_ctrl] from mode_ctrl::@2
|
||||||
|
[14] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@4: scope:[mode_ctrl] from mode_ctrl::@2
|
||||||
|
[15] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
print_cls: scope:[print_cls] from main
|
||||||
|
[16] phi() [ ] ( main:2::print_cls:5 [ ] )
|
||||||
|
to:print_cls::@1
|
||||||
|
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||||
|
[17] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
|
||||||
|
[18] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
|
||||||
|
[19] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
|
||||||
|
[20] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
|
||||||
|
to:print_cls::@return
|
||||||
|
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||||
|
[21] return [ ] ( main:2::print_cls:5 [ ] )
|
||||||
|
to:@return
|
856
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.log
Normal file
856
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.log
Normal file
@ -0,0 +1,856 @@
|
|||||||
|
PARSING src/test/java/dk/camelot64/kickc/test/kc/loop-problem2.kc
|
||||||
|
const byte* BORDERCOL = $d020;
|
||||||
|
const byte* SCREEN = $0400;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
print_cls();
|
||||||
|
mode_ctrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_cls() {
|
||||||
|
for(byte* sc=SCREEN; sc!=SCREEN+1000; sc++) {
|
||||||
|
*sc = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void mode_ctrl() {
|
||||||
|
while(true) {
|
||||||
|
byte before = *BORDERCOL;
|
||||||
|
if(before==$ff) {
|
||||||
|
*BORDERCOL = 2;
|
||||||
|
} else {
|
||||||
|
*BORDERCOL = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Adding pre/post-modifier (byte*) print_cls::sc ← ++ (byte*) print_cls::sc
|
||||||
|
|
||||||
|
STATEMENTS
|
||||||
|
(byte*) BORDERCOL ← (word/dword/signed dword) 53280
|
||||||
|
(byte*) SCREEN ← (word/signed word/dword/signed dword) 1024
|
||||||
|
proc (void()) main()
|
||||||
|
(void~) main::$0 ← call print_cls
|
||||||
|
(void~) main::$1 ← call mode_ctrl
|
||||||
|
main::@return:
|
||||||
|
return
|
||||||
|
endproc // main()
|
||||||
|
proc (void()) print_cls()
|
||||||
|
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||||
|
print_cls::@1:
|
||||||
|
*((byte*) print_cls::sc) ← (byte) ' '
|
||||||
|
(byte*) print_cls::sc ← ++ (byte*) print_cls::sc
|
||||||
|
(byte*~) print_cls::$0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1000
|
||||||
|
(boolean~) print_cls::$1 ← (byte*) print_cls::sc != (byte*~) print_cls::$0
|
||||||
|
if((boolean~) print_cls::$1) goto print_cls::@1
|
||||||
|
print_cls::@return:
|
||||||
|
return
|
||||||
|
endproc // print_cls()
|
||||||
|
proc (void()) mode_ctrl()
|
||||||
|
mode_ctrl::@1:
|
||||||
|
if(true) goto mode_ctrl::@2
|
||||||
|
goto mode_ctrl::@3
|
||||||
|
mode_ctrl::@2:
|
||||||
|
(byte) mode_ctrl::before ← *((byte*) BORDERCOL)
|
||||||
|
(boolean~) mode_ctrl::$0 ← (byte) mode_ctrl::before == (byte/word/signed word/dword/signed dword) 255
|
||||||
|
(boolean~) mode_ctrl::$1 ← ! (boolean~) mode_ctrl::$0
|
||||||
|
if((boolean~) mode_ctrl::$1) goto mode_ctrl::@4
|
||||||
|
*((byte*) BORDERCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||||
|
goto mode_ctrl::@5
|
||||||
|
mode_ctrl::@4:
|
||||||
|
*((byte*) BORDERCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||||
|
mode_ctrl::@5:
|
||||||
|
goto mode_ctrl::@1
|
||||||
|
mode_ctrl::@3:
|
||||||
|
mode_ctrl::@return:
|
||||||
|
return
|
||||||
|
endproc // mode_ctrl()
|
||||||
|
call main
|
||||||
|
|
||||||
|
SYMBOLS
|
||||||
|
(byte*) BORDERCOL
|
||||||
|
(byte*) SCREEN
|
||||||
|
(void()) main()
|
||||||
|
(void~) main::$0
|
||||||
|
(void~) main::$1
|
||||||
|
(label) main::@return
|
||||||
|
(void()) mode_ctrl()
|
||||||
|
(boolean~) mode_ctrl::$0
|
||||||
|
(boolean~) mode_ctrl::$1
|
||||||
|
(label) mode_ctrl::@1
|
||||||
|
(label) mode_ctrl::@2
|
||||||
|
(label) mode_ctrl::@3
|
||||||
|
(label) mode_ctrl::@4
|
||||||
|
(label) mode_ctrl::@5
|
||||||
|
(label) mode_ctrl::@return
|
||||||
|
(byte) mode_ctrl::before
|
||||||
|
(void()) print_cls()
|
||||||
|
(byte*~) print_cls::$0
|
||||||
|
(boolean~) print_cls::$1
|
||||||
|
(label) print_cls::@1
|
||||||
|
(label) print_cls::@return
|
||||||
|
(byte*) print_cls::sc
|
||||||
|
|
||||||
|
Promoting word/dword/signed dword to byte* in BORDERCOL ← ((byte*)) 53280
|
||||||
|
Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024
|
||||||
|
INITIAL CONTROL FLOW GRAPH
|
||||||
|
@begin: scope:[] from
|
||||||
|
(byte*) BORDERCOL ← ((byte*)) (word/dword/signed dword) 53280
|
||||||
|
(byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||||
|
to:@1
|
||||||
|
main: scope:[main] from
|
||||||
|
(void~) main::$0 ← call print_cls
|
||||||
|
(void~) main::$1 ← call mode_ctrl
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
@1: scope:[] from @begin
|
||||||
|
to:@2
|
||||||
|
print_cls: scope:[print_cls] from
|
||||||
|
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||||
|
to:print_cls::@1
|
||||||
|
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||||
|
*((byte*) print_cls::sc) ← (byte) ' '
|
||||||
|
(byte*) print_cls::sc ← ++ (byte*) print_cls::sc
|
||||||
|
(byte*~) print_cls::$0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1000
|
||||||
|
(boolean~) print_cls::$1 ← (byte*) print_cls::sc != (byte*~) print_cls::$0
|
||||||
|
if((boolean~) print_cls::$1) goto print_cls::@1
|
||||||
|
to:print_cls::@2
|
||||||
|
print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||||
|
to:print_cls::@return
|
||||||
|
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
@2: scope:[] from @1
|
||||||
|
to:@3
|
||||||
|
mode_ctrl: scope:[mode_ctrl] from
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@1: scope:[mode_ctrl] from mode_ctrl mode_ctrl::@5
|
||||||
|
if(true) goto mode_ctrl::@2
|
||||||
|
to:mode_ctrl::@6
|
||||||
|
mode_ctrl::@2: scope:[mode_ctrl] from mode_ctrl::@1 mode_ctrl::@7
|
||||||
|
(byte) mode_ctrl::before ← *((byte*) BORDERCOL)
|
||||||
|
(boolean~) mode_ctrl::$0 ← (byte) mode_ctrl::before == (byte/word/signed word/dword/signed dword) 255
|
||||||
|
(boolean~) mode_ctrl::$1 ← ! (boolean~) mode_ctrl::$0
|
||||||
|
if((boolean~) mode_ctrl::$1) goto mode_ctrl::@4
|
||||||
|
to:mode_ctrl::@8
|
||||||
|
mode_ctrl::@6: scope:[mode_ctrl] from mode_ctrl::@1
|
||||||
|
to:mode_ctrl::@3
|
||||||
|
mode_ctrl::@3: scope:[mode_ctrl] from mode_ctrl::@10 mode_ctrl::@6
|
||||||
|
to:mode_ctrl::@return
|
||||||
|
mode_ctrl::@7: scope:[mode_ctrl] from
|
||||||
|
to:mode_ctrl::@2
|
||||||
|
mode_ctrl::@4: scope:[mode_ctrl] from mode_ctrl::@2 mode_ctrl::@9
|
||||||
|
*((byte*) BORDERCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||||
|
to:mode_ctrl::@5
|
||||||
|
mode_ctrl::@8: scope:[mode_ctrl] from mode_ctrl::@2
|
||||||
|
*((byte*) BORDERCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||||
|
to:mode_ctrl::@5
|
||||||
|
mode_ctrl::@5: scope:[mode_ctrl] from mode_ctrl::@4 mode_ctrl::@8
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@9: scope:[mode_ctrl] from
|
||||||
|
to:mode_ctrl::@4
|
||||||
|
mode_ctrl::@10: scope:[mode_ctrl] from
|
||||||
|
to:mode_ctrl::@3
|
||||||
|
mode_ctrl::@return: scope:[mode_ctrl] from mode_ctrl::@3
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
@3: scope:[] from @2
|
||||||
|
call main
|
||||||
|
to:@end
|
||||||
|
@end: scope:[] from @3
|
||||||
|
|
||||||
|
Eliminating unused variable - keeping the call (void~) main::$0
|
||||||
|
Eliminating unused variable - keeping the call (void~) main::$1
|
||||||
|
Removing empty block @1
|
||||||
|
Removing empty block print_cls::@2
|
||||||
|
Removing empty block @2
|
||||||
|
Removing empty block mode_ctrl::@6
|
||||||
|
Removing empty block mode_ctrl::@3
|
||||||
|
Removing empty block mode_ctrl::@7
|
||||||
|
Removing empty block mode_ctrl::@5
|
||||||
|
Removing empty block mode_ctrl::@9
|
||||||
|
Removing empty block mode_ctrl::@10
|
||||||
|
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||||
|
|
||||||
|
Completing Phi functions...
|
||||||
|
|
||||||
|
CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||||
|
@begin: scope:[] from
|
||||||
|
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||||
|
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||||
|
to:@3
|
||||||
|
main: scope:[main] from @3
|
||||||
|
call print_cls param-assignment
|
||||||
|
to:main::@1
|
||||||
|
main::@1: scope:[main] from main
|
||||||
|
call mode_ctrl param-assignment
|
||||||
|
to:main::@2
|
||||||
|
main::@2: scope:[main] from main::@1
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main::@2
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
print_cls: scope:[print_cls] from main
|
||||||
|
(byte*) print_cls::sc#0 ← (byte*) SCREEN#0
|
||||||
|
to:print_cls::@1
|
||||||
|
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||||
|
(byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||||
|
*((byte*) print_cls::sc#2) ← (byte) ' '
|
||||||
|
(byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||||
|
(byte*~) print_cls::$0 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) 1000
|
||||||
|
(boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0
|
||||||
|
if((boolean~) print_cls::$1) goto print_cls::@1
|
||||||
|
to:print_cls::@return
|
||||||
|
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
mode_ctrl: scope:[mode_ctrl] from main::@1
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@1: scope:[mode_ctrl] from mode_ctrl mode_ctrl::@4 mode_ctrl::@8
|
||||||
|
if(true) goto mode_ctrl::@2
|
||||||
|
to:mode_ctrl::@return
|
||||||
|
mode_ctrl::@2: scope:[mode_ctrl] from mode_ctrl::@1
|
||||||
|
(byte) mode_ctrl::before#0 ← *((byte*) BORDERCOL#0)
|
||||||
|
(boolean~) mode_ctrl::$0 ← (byte) mode_ctrl::before#0 == (byte/word/signed word/dword/signed dword) 255
|
||||||
|
(boolean~) mode_ctrl::$1 ← ! (boolean~) mode_ctrl::$0
|
||||||
|
if((boolean~) mode_ctrl::$1) goto mode_ctrl::@4
|
||||||
|
to:mode_ctrl::@8
|
||||||
|
mode_ctrl::@4: scope:[mode_ctrl] from mode_ctrl::@2
|
||||||
|
*((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@8: scope:[mode_ctrl] from mode_ctrl::@2
|
||||||
|
*((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@return: scope:[mode_ctrl] from mode_ctrl::@1
|
||||||
|
return
|
||||||
|
to:@return
|
||||||
|
@3: scope:[] from @begin
|
||||||
|
call main param-assignment
|
||||||
|
to:@4
|
||||||
|
@4: scope:[] from @3
|
||||||
|
to:@end
|
||||||
|
@end: scope:[] from @4
|
||||||
|
|
||||||
|
SYMBOL TABLE SSA
|
||||||
|
(label) @3
|
||||||
|
(label) @4
|
||||||
|
(label) @begin
|
||||||
|
(label) @end
|
||||||
|
(byte*) BORDERCOL
|
||||||
|
(byte*) BORDERCOL#0
|
||||||
|
(byte*) SCREEN
|
||||||
|
(byte*) SCREEN#0
|
||||||
|
(void()) main()
|
||||||
|
(label) main::@1
|
||||||
|
(label) main::@2
|
||||||
|
(label) main::@return
|
||||||
|
(void()) mode_ctrl()
|
||||||
|
(boolean~) mode_ctrl::$0
|
||||||
|
(boolean~) mode_ctrl::$1
|
||||||
|
(label) mode_ctrl::@1
|
||||||
|
(label) mode_ctrl::@2
|
||||||
|
(label) mode_ctrl::@4
|
||||||
|
(label) mode_ctrl::@8
|
||||||
|
(label) mode_ctrl::@return
|
||||||
|
(byte) mode_ctrl::before
|
||||||
|
(byte) mode_ctrl::before#0
|
||||||
|
(void()) print_cls()
|
||||||
|
(byte*~) print_cls::$0
|
||||||
|
(boolean~) print_cls::$1
|
||||||
|
(label) print_cls::@1
|
||||||
|
(label) print_cls::@return
|
||||||
|
(byte*) print_cls::sc
|
||||||
|
(byte*) print_cls::sc#0
|
||||||
|
(byte*) print_cls::sc#1
|
||||||
|
(byte*) print_cls::sc#2
|
||||||
|
|
||||||
|
OPTIMIZING CONTROL FLOW GRAPH
|
||||||
|
Culled Empty Block (label) main::@2
|
||||||
|
Culled Empty Block (label) @4
|
||||||
|
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||||
|
Inversing boolean not (boolean~) mode_ctrl::$1 ← (byte) mode_ctrl::before#0 != (byte/word/signed word/dword/signed dword) 255 from (boolean~) mode_ctrl::$0 ← (byte) mode_ctrl::before#0 == (byte/word/signed word/dword/signed dword) 255
|
||||||
|
Succesful SSA optimization Pass2UnaryNotSimplification
|
||||||
|
Not aliassing across scopes: print_cls::sc#0 SCREEN#0
|
||||||
|
Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||||
|
Simple Condition (boolean~) mode_ctrl::$1 if((byte) mode_ctrl::before#0!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4
|
||||||
|
Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||||
|
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||||
|
Constant (const byte*) SCREEN#0 = ((byte*))1024
|
||||||
|
Succesful SSA optimization Pass2ConstantIdentification
|
||||||
|
Constant (const byte*) print_cls::sc#0 = SCREEN#0
|
||||||
|
Constant (const byte*) print_cls::$0 = SCREEN#0+1000
|
||||||
|
Succesful SSA optimization Pass2ConstantIdentification
|
||||||
|
OPTIMIZING CONTROL FLOW GRAPH
|
||||||
|
Inlining constant with var siblings (const byte*) print_cls::sc#0
|
||||||
|
Inlining constant with var siblings (const byte*) print_cls::sc#0
|
||||||
|
Constant inlined print_cls::$0 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000
|
||||||
|
Constant inlined print_cls::sc#0 = (const byte*) SCREEN#0
|
||||||
|
Succesful SSA optimization Pass2ConstantInlining
|
||||||
|
Block Sequence Planned @begin @3 @end main main::@1 main::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@2 mode_ctrl::@8 mode_ctrl::@4 print_cls print_cls::@1 print_cls::@return
|
||||||
|
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
|
||||||
|
Block Sequence Planned @begin @3 @end main main::@1 main::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@2 mode_ctrl::@8 mode_ctrl::@4 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||||
|
Adding NOP phi() at start of @begin
|
||||||
|
Adding NOP phi() at start of @3
|
||||||
|
Adding NOP phi() at start of @end
|
||||||
|
Adding NOP phi() at start of main
|
||||||
|
Adding NOP phi() at start of main::@1
|
||||||
|
Adding NOP phi() at start of mode_ctrl
|
||||||
|
Adding NOP phi() at start of print_cls
|
||||||
|
CALL GRAPH
|
||||||
|
Calls in [] to main:2
|
||||||
|
Calls in [main] to print_cls:5 mode_ctrl:7
|
||||||
|
|
||||||
|
Propagating live ranges...
|
||||||
|
Propagating live ranges...
|
||||||
|
Created 1 initial phi equivalence classes
|
||||||
|
Coalesced [22] print_cls::sc#3 ← print_cls::sc#1
|
||||||
|
Coalesced down to 1 phi equivalence classes
|
||||||
|
Culled Empty Block (label) print_cls::@3
|
||||||
|
Block Sequence Planned @begin @3 @end main main::@1 main::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@2 mode_ctrl::@8 mode_ctrl::@4 print_cls print_cls::@1 print_cls::@return
|
||||||
|
Adding NOP phi() at start of @begin
|
||||||
|
Adding NOP phi() at start of @3
|
||||||
|
Adding NOP phi() at start of @end
|
||||||
|
Adding NOP phi() at start of main
|
||||||
|
Adding NOP phi() at start of main::@1
|
||||||
|
Adding NOP phi() at start of mode_ctrl
|
||||||
|
Adding NOP phi() at start of print_cls
|
||||||
|
Propagating live ranges...
|
||||||
|
Propagating live ranges...
|
||||||
|
|
||||||
|
FINAL CONTROL FLOW GRAPH
|
||||||
|
@begin: scope:[] from
|
||||||
|
[0] phi() [ ] ( )
|
||||||
|
to:@3
|
||||||
|
@3: scope:[] from @begin
|
||||||
|
[1] phi() [ ] ( )
|
||||||
|
[2] call main param-assignment [ ] ( )
|
||||||
|
to:@end
|
||||||
|
@end: scope:[] from @3
|
||||||
|
[3] phi() [ ] ( )
|
||||||
|
main: scope:[main] from @3
|
||||||
|
[4] phi() [ ] ( main:2 [ ] )
|
||||||
|
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||||
|
to:main::@1
|
||||||
|
main::@1: scope:[main] from main
|
||||||
|
[6] phi() [ ] ( main:2 [ ] )
|
||||||
|
[7] call mode_ctrl param-assignment [ ] ( main:2 [ ] )
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main::@1
|
||||||
|
[8] return [ ] ( main:2 [ ] )
|
||||||
|
to:@return
|
||||||
|
mode_ctrl: scope:[mode_ctrl] from main::@1
|
||||||
|
[9] phi() [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@1: scope:[mode_ctrl] from mode_ctrl mode_ctrl::@4 mode_ctrl::@8
|
||||||
|
[10] if(true) goto mode_ctrl::@2 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@return
|
||||||
|
mode_ctrl::@return: scope:[mode_ctrl] from mode_ctrl::@1
|
||||||
|
[11] return [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:@return
|
||||||
|
mode_ctrl::@2: scope:[mode_ctrl] from mode_ctrl::@1
|
||||||
|
[12] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) [ mode_ctrl::before#0 ] ( main:2::mode_ctrl:7 [ mode_ctrl::before#0 ] )
|
||||||
|
[13] if((byte) mode_ctrl::before#0!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@8
|
||||||
|
mode_ctrl::@8: scope:[mode_ctrl] from mode_ctrl::@2
|
||||||
|
[14] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
mode_ctrl::@4: scope:[mode_ctrl] from mode_ctrl::@2
|
||||||
|
[15] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
to:mode_ctrl::@1
|
||||||
|
print_cls: scope:[print_cls] from main
|
||||||
|
[16] phi() [ ] ( main:2::print_cls:5 [ ] )
|
||||||
|
to:print_cls::@1
|
||||||
|
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||||
|
[17] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
|
||||||
|
[18] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] )
|
||||||
|
[19] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
|
||||||
|
[20] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] )
|
||||||
|
to:print_cls::@return
|
||||||
|
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||||
|
[21] return [ ] ( main:2::print_cls:5 [ ] )
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
DOMINATORS
|
||||||
|
@begin dominated by @begin
|
||||||
|
@3 dominated by @begin @3
|
||||||
|
@end dominated by @begin @end @3
|
||||||
|
main dominated by @begin main @3
|
||||||
|
main::@1 dominated by @begin main @3 main::@1
|
||||||
|
main::@return dominated by main::@return @begin main @3 main::@1
|
||||||
|
mode_ctrl dominated by @begin main mode_ctrl @3 main::@1
|
||||||
|
mode_ctrl::@1 dominated by @begin main mode_ctrl @3 main::@1 mode_ctrl::@1
|
||||||
|
mode_ctrl::@return dominated by @begin main mode_ctrl @3 mode_ctrl::@return main::@1 mode_ctrl::@1
|
||||||
|
mode_ctrl::@2 dominated by @begin main mode_ctrl @3 main::@1 mode_ctrl::@2 mode_ctrl::@1
|
||||||
|
mode_ctrl::@8 dominated by @begin main mode_ctrl @3 main::@1 mode_ctrl::@2 mode_ctrl::@1 mode_ctrl::@8
|
||||||
|
mode_ctrl::@4 dominated by @begin main mode_ctrl @3 main::@1 mode_ctrl::@2 mode_ctrl::@1 mode_ctrl::@4
|
||||||
|
print_cls dominated by @begin main print_cls @3
|
||||||
|
print_cls::@1 dominated by @begin print_cls::@1 main print_cls @3
|
||||||
|
print_cls::@return dominated by @begin print_cls::@1 main print_cls @3 print_cls::@return
|
||||||
|
|
||||||
|
NATURAL LOOPS
|
||||||
|
Found back edge: Loop head: mode_ctrl::@1 tails: mode_ctrl::@8 blocks: null
|
||||||
|
Found back edge: Loop head: mode_ctrl::@1 tails: mode_ctrl::@4 blocks: null
|
||||||
|
Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null
|
||||||
|
Populated: Loop head: mode_ctrl::@1 tails: mode_ctrl::@8 blocks: mode_ctrl::@8 mode_ctrl::@2 mode_ctrl::@1
|
||||||
|
Populated: Loop head: mode_ctrl::@1 tails: mode_ctrl::@4 blocks: mode_ctrl::@4 mode_ctrl::@2 mode_ctrl::@1
|
||||||
|
Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1
|
||||||
|
Coalesced: Loop head: mode_ctrl::@1 tails: mode_ctrl::@8 mode_ctrl::@4 blocks: mode_ctrl::@8 mode_ctrl::@2 mode_ctrl::@1 mode_ctrl::@4
|
||||||
|
Loop head: mode_ctrl::@1 tails: mode_ctrl::@8 mode_ctrl::@4 blocks: mode_ctrl::@8 mode_ctrl::@2 mode_ctrl::@1 mode_ctrl::@4
|
||||||
|
Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1
|
||||||
|
|
||||||
|
NATURAL LOOPS WITH DEPTH
|
||||||
|
Found 0 loops in scope []
|
||||||
|
Found 0 loops in scope [main]
|
||||||
|
Found 1 loops in scope [print_cls]
|
||||||
|
Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1
|
||||||
|
Found 1 loops in scope [mode_ctrl]
|
||||||
|
Loop head: mode_ctrl::@1 tails: mode_ctrl::@8 mode_ctrl::@4 blocks: mode_ctrl::@8 mode_ctrl::@2 mode_ctrl::@1 mode_ctrl::@4
|
||||||
|
Loop head: mode_ctrl::@1 tails: mode_ctrl::@8 mode_ctrl::@4 blocks: mode_ctrl::@8 mode_ctrl::@2 mode_ctrl::@1 mode_ctrl::@4 depth: 1
|
||||||
|
Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1
|
||||||
|
|
||||||
|
|
||||||
|
VARIABLE REGISTER WEIGHTS
|
||||||
|
(byte*) BORDERCOL
|
||||||
|
(byte*) SCREEN
|
||||||
|
(void()) main()
|
||||||
|
(void()) mode_ctrl()
|
||||||
|
(byte) mode_ctrl::before
|
||||||
|
(byte) mode_ctrl::before#0 22.0
|
||||||
|
(void()) print_cls()
|
||||||
|
(byte*) print_cls::sc
|
||||||
|
(byte*) print_cls::sc#1 16.5
|
||||||
|
(byte*) print_cls::sc#2 16.5
|
||||||
|
|
||||||
|
Initial phi equivalence classes
|
||||||
|
[ print_cls::sc#2 print_cls::sc#1 ]
|
||||||
|
Added variable mode_ctrl::before#0 to zero page equivalence class [ mode_ctrl::before#0 ]
|
||||||
|
Complete equivalence classes
|
||||||
|
[ print_cls::sc#2 print_cls::sc#1 ]
|
||||||
|
[ mode_ctrl::before#0 ]
|
||||||
|
Allocated zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||||
|
Allocated zp ZP_BYTE:4 [ mode_ctrl::before#0 ]
|
||||||
|
|
||||||
|
INITIAL ASM
|
||||||
|
//SEG0 Basic Upstart
|
||||||
|
.pc = $801 "Basic"
|
||||||
|
:BasicUpstart(main)
|
||||||
|
.pc = $80d "Program"
|
||||||
|
//SEG1 Global Constants & labels
|
||||||
|
.label BORDERCOL = $d020
|
||||||
|
.label SCREEN = $400
|
||||||
|
//SEG2 @begin
|
||||||
|
bbegin:
|
||||||
|
//SEG3 [1] phi from @begin to @3 [phi:@begin->@3]
|
||||||
|
b3_from_bbegin:
|
||||||
|
jmp b3
|
||||||
|
//SEG4 @3
|
||||||
|
b3:
|
||||||
|
//SEG5 [2] call main param-assignment [ ] ( )
|
||||||
|
//SEG6 [4] phi from @3 to main [phi:@3->main]
|
||||||
|
main_from_b3:
|
||||||
|
jsr main
|
||||||
|
//SEG7 [3] phi from @3 to @end [phi:@3->@end]
|
||||||
|
bend_from_b3:
|
||||||
|
jmp bend
|
||||||
|
//SEG8 @end
|
||||||
|
bend:
|
||||||
|
//SEG9 main
|
||||||
|
main: {
|
||||||
|
//SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||||
|
//SEG11 [16] phi from main to print_cls [phi:main->print_cls]
|
||||||
|
print_cls_from_main:
|
||||||
|
jsr print_cls
|
||||||
|
//SEG12 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||||
|
b1_from_main:
|
||||||
|
jmp b1
|
||||||
|
//SEG13 main::@1
|
||||||
|
b1:
|
||||||
|
//SEG14 [7] call mode_ctrl param-assignment [ ] ( main:2 [ ] )
|
||||||
|
//SEG15 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl]
|
||||||
|
mode_ctrl_from_b1:
|
||||||
|
jsr mode_ctrl
|
||||||
|
jmp breturn
|
||||||
|
//SEG16 main::@return
|
||||||
|
breturn:
|
||||||
|
//SEG17 [8] return [ ] ( main:2 [ ] )
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
//SEG18 mode_ctrl
|
||||||
|
mode_ctrl: {
|
||||||
|
.label before = 4
|
||||||
|
jmp b1
|
||||||
|
//SEG19 mode_ctrl::@1
|
||||||
|
b1:
|
||||||
|
//SEG20 [10] if(true) goto mode_ctrl::@2 [ ] ( main:2::mode_ctrl:7 [ ] ) -- true_then_la1
|
||||||
|
jmp b2
|
||||||
|
jmp breturn
|
||||||
|
//SEG21 mode_ctrl::@return
|
||||||
|
breturn:
|
||||||
|
//SEG22 [11] return [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
rts
|
||||||
|
//SEG23 mode_ctrl::@2
|
||||||
|
b2:
|
||||||
|
//SEG24 [12] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) [ mode_ctrl::before#0 ] ( main:2::mode_ctrl:7 [ mode_ctrl::before#0 ] ) -- vbuz1=_deref_pbuc1
|
||||||
|
lda BORDERCOL
|
||||||
|
sta before
|
||||||
|
//SEG25 [13] if((byte) mode_ctrl::before#0!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 [ ] ( main:2::mode_ctrl:7 [ ] ) -- vbuz1_neq_vbuc1_then_la1
|
||||||
|
lda before
|
||||||
|
cmp #$ff
|
||||||
|
bne b4
|
||||||
|
jmp b8
|
||||||
|
//SEG26 mode_ctrl::@8
|
||||||
|
b8:
|
||||||
|
//SEG27 [14] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::mode_ctrl:7 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #2
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b1
|
||||||
|
//SEG28 mode_ctrl::@4
|
||||||
|
b4:
|
||||||
|
//SEG29 [15] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2::mode_ctrl:7 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #3
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b1
|
||||||
|
}
|
||||||
|
//SEG30 print_cls
|
||||||
|
print_cls: {
|
||||||
|
.label sc = 2
|
||||||
|
//SEG31 [17] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||||
|
b1_from_print_cls:
|
||||||
|
//SEG32 [17] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||||
|
lda #<SCREEN
|
||||||
|
sta sc
|
||||||
|
lda #>SCREEN
|
||||||
|
sta sc+1
|
||||||
|
jmp b1
|
||||||
|
//SEG33 [17] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||||
|
b1_from_b1:
|
||||||
|
//SEG34 [17] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy
|
||||||
|
jmp b1
|
||||||
|
//SEG35 print_cls::@1
|
||||||
|
b1:
|
||||||
|
//SEG36 [18] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
|
lda #' '
|
||||||
|
ldy #0
|
||||||
|
sta (sc),y
|
||||||
|
//SEG37 [19] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
|
inc sc
|
||||||
|
bne !+
|
||||||
|
inc sc+1
|
||||||
|
!:
|
||||||
|
//SEG38 [20] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1
|
||||||
|
lda sc+1
|
||||||
|
cmp #>SCREEN+$3e8
|
||||||
|
bne b1_from_b1
|
||||||
|
lda sc
|
||||||
|
cmp #<SCREEN+$3e8
|
||||||
|
bne b1_from_b1
|
||||||
|
jmp breturn
|
||||||
|
//SEG39 print_cls::@return
|
||||||
|
breturn:
|
||||||
|
//SEG40 [21] return [ ] ( main:2::print_cls:5 [ ] )
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
|
||||||
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||||
|
Statement [14] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::mode_ctrl:7 [ ] ) always clobbers reg byte a
|
||||||
|
Statement [15] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2::mode_ctrl:7 [ ] ) always clobbers reg byte a
|
||||||
|
Statement [18] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||||
|
Statement [20] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||||
|
Potential registers zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:2 ,
|
||||||
|
Potential registers zp ZP_BYTE:4 [ mode_ctrl::before#0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
|
||||||
|
|
||||||
|
REGISTER UPLIFT SCOPES
|
||||||
|
Uplift Scope [print_cls] 33: zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||||
|
Uplift Scope [mode_ctrl] 22: zp ZP_BYTE:4 [ mode_ctrl::before#0 ]
|
||||||
|
Uplift Scope [main]
|
||||||
|
Uplift Scope []
|
||||||
|
|
||||||
|
Uplifting [print_cls] best 1058 combination zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||||
|
Uplifting [mode_ctrl] best 998 combination reg byte a [ mode_ctrl::before#0 ]
|
||||||
|
Uplifting [main] best 998 combination
|
||||||
|
Uplifting [] best 998 combination
|
||||||
|
|
||||||
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
|
//SEG0 Basic Upstart
|
||||||
|
.pc = $801 "Basic"
|
||||||
|
:BasicUpstart(main)
|
||||||
|
.pc = $80d "Program"
|
||||||
|
//SEG1 Global Constants & labels
|
||||||
|
.label BORDERCOL = $d020
|
||||||
|
.label SCREEN = $400
|
||||||
|
//SEG2 @begin
|
||||||
|
bbegin:
|
||||||
|
//SEG3 [1] phi from @begin to @3 [phi:@begin->@3]
|
||||||
|
b3_from_bbegin:
|
||||||
|
jmp b3
|
||||||
|
//SEG4 @3
|
||||||
|
b3:
|
||||||
|
//SEG5 [2] call main param-assignment [ ] ( )
|
||||||
|
//SEG6 [4] phi from @3 to main [phi:@3->main]
|
||||||
|
main_from_b3:
|
||||||
|
jsr main
|
||||||
|
//SEG7 [3] phi from @3 to @end [phi:@3->@end]
|
||||||
|
bend_from_b3:
|
||||||
|
jmp bend
|
||||||
|
//SEG8 @end
|
||||||
|
bend:
|
||||||
|
//SEG9 main
|
||||||
|
main: {
|
||||||
|
//SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||||
|
//SEG11 [16] phi from main to print_cls [phi:main->print_cls]
|
||||||
|
print_cls_from_main:
|
||||||
|
jsr print_cls
|
||||||
|
//SEG12 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||||
|
b1_from_main:
|
||||||
|
jmp b1
|
||||||
|
//SEG13 main::@1
|
||||||
|
b1:
|
||||||
|
//SEG14 [7] call mode_ctrl param-assignment [ ] ( main:2 [ ] )
|
||||||
|
//SEG15 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl]
|
||||||
|
mode_ctrl_from_b1:
|
||||||
|
jsr mode_ctrl
|
||||||
|
jmp breturn
|
||||||
|
//SEG16 main::@return
|
||||||
|
breturn:
|
||||||
|
//SEG17 [8] return [ ] ( main:2 [ ] )
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
//SEG18 mode_ctrl
|
||||||
|
mode_ctrl: {
|
||||||
|
jmp b1
|
||||||
|
//SEG19 mode_ctrl::@1
|
||||||
|
b1:
|
||||||
|
//SEG20 [10] if(true) goto mode_ctrl::@2 [ ] ( main:2::mode_ctrl:7 [ ] ) -- true_then_la1
|
||||||
|
jmp b2
|
||||||
|
jmp breturn
|
||||||
|
//SEG21 mode_ctrl::@return
|
||||||
|
breturn:
|
||||||
|
//SEG22 [11] return [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
rts
|
||||||
|
//SEG23 mode_ctrl::@2
|
||||||
|
b2:
|
||||||
|
//SEG24 [12] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) [ mode_ctrl::before#0 ] ( main:2::mode_ctrl:7 [ mode_ctrl::before#0 ] ) -- vbuaa=_deref_pbuc1
|
||||||
|
lda BORDERCOL
|
||||||
|
//SEG25 [13] if((byte) mode_ctrl::before#0!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 [ ] ( main:2::mode_ctrl:7 [ ] ) -- vbuaa_neq_vbuc1_then_la1
|
||||||
|
cmp #$ff
|
||||||
|
bne b4
|
||||||
|
jmp b8
|
||||||
|
//SEG26 mode_ctrl::@8
|
||||||
|
b8:
|
||||||
|
//SEG27 [14] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::mode_ctrl:7 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #2
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b1
|
||||||
|
//SEG28 mode_ctrl::@4
|
||||||
|
b4:
|
||||||
|
//SEG29 [15] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2::mode_ctrl:7 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #3
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b1
|
||||||
|
}
|
||||||
|
//SEG30 print_cls
|
||||||
|
print_cls: {
|
||||||
|
.label sc = 2
|
||||||
|
//SEG31 [17] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||||
|
b1_from_print_cls:
|
||||||
|
//SEG32 [17] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||||
|
lda #<SCREEN
|
||||||
|
sta sc
|
||||||
|
lda #>SCREEN
|
||||||
|
sta sc+1
|
||||||
|
jmp b1
|
||||||
|
//SEG33 [17] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||||
|
b1_from_b1:
|
||||||
|
//SEG34 [17] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy
|
||||||
|
jmp b1
|
||||||
|
//SEG35 print_cls::@1
|
||||||
|
b1:
|
||||||
|
//SEG36 [18] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
|
lda #' '
|
||||||
|
ldy #0
|
||||||
|
sta (sc),y
|
||||||
|
//SEG37 [19] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
|
inc sc
|
||||||
|
bne !+
|
||||||
|
inc sc+1
|
||||||
|
!:
|
||||||
|
//SEG38 [20] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1
|
||||||
|
lda sc+1
|
||||||
|
cmp #>SCREEN+$3e8
|
||||||
|
bne b1_from_b1
|
||||||
|
lda sc
|
||||||
|
cmp #<SCREEN+$3e8
|
||||||
|
bne b1_from_b1
|
||||||
|
jmp breturn
|
||||||
|
//SEG39 print_cls::@return
|
||||||
|
breturn:
|
||||||
|
//SEG40 [21] return [ ] ( main:2::print_cls:5 [ ] )
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSEMBLER OPTIMIZATIONS
|
||||||
|
Removing instruction jmp b3
|
||||||
|
Removing instruction jmp bend
|
||||||
|
Removing instruction jmp b1
|
||||||
|
Removing instruction jmp breturn
|
||||||
|
Removing instruction jmp b1
|
||||||
|
Removing instruction jmp breturn
|
||||||
|
Removing instruction jmp b8
|
||||||
|
Removing instruction jmp b1
|
||||||
|
Removing instruction jmp breturn
|
||||||
|
Succesful ASM optimization Pass5NextJumpElimination
|
||||||
|
Replacing label b1_from_b1 with b1
|
||||||
|
Replacing label b1_from_b1 with b1
|
||||||
|
Removing instruction bbegin:
|
||||||
|
Removing instruction b3_from_bbegin:
|
||||||
|
Removing instruction main_from_b3:
|
||||||
|
Removing instruction bend_from_b3:
|
||||||
|
Removing instruction b1_from_main:
|
||||||
|
Removing instruction mode_ctrl_from_b1:
|
||||||
|
Removing instruction b1_from_b1:
|
||||||
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||||
|
Removing instruction b3:
|
||||||
|
Removing instruction bend:
|
||||||
|
Removing instruction print_cls_from_main:
|
||||||
|
Removing instruction b1:
|
||||||
|
Removing instruction breturn:
|
||||||
|
Removing instruction breturn:
|
||||||
|
Removing instruction b8:
|
||||||
|
Removing instruction b1_from_print_cls:
|
||||||
|
Removing instruction breturn:
|
||||||
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||||
|
Skipping double jump to b2 in jmp b1
|
||||||
|
Skipping double jump to b2 in jmp b1
|
||||||
|
Succesful ASM optimization Pass5DoubleJumpElimination
|
||||||
|
Removing unreachable instruction rts
|
||||||
|
Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||||
|
Removing instruction jmp b2
|
||||||
|
Removing instruction jmp b1
|
||||||
|
Succesful ASM optimization Pass5NextJumpElimination
|
||||||
|
Removing instruction b1:
|
||||||
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||||
|
|
||||||
|
FINAL SYMBOL TABLE
|
||||||
|
(label) @3
|
||||||
|
(label) @begin
|
||||||
|
(label) @end
|
||||||
|
(byte*) BORDERCOL
|
||||||
|
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||||
|
(byte*) SCREEN
|
||||||
|
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||||
|
(void()) main()
|
||||||
|
(label) main::@1
|
||||||
|
(label) main::@return
|
||||||
|
(void()) mode_ctrl()
|
||||||
|
(label) mode_ctrl::@1
|
||||||
|
(label) mode_ctrl::@2
|
||||||
|
(label) mode_ctrl::@4
|
||||||
|
(label) mode_ctrl::@8
|
||||||
|
(label) mode_ctrl::@return
|
||||||
|
(byte) mode_ctrl::before
|
||||||
|
(byte) mode_ctrl::before#0 reg byte a 22.0
|
||||||
|
(void()) print_cls()
|
||||||
|
(label) print_cls::@1
|
||||||
|
(label) print_cls::@return
|
||||||
|
(byte*) print_cls::sc
|
||||||
|
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||||
|
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||||
|
|
||||||
|
zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||||
|
reg byte a [ mode_ctrl::before#0 ]
|
||||||
|
|
||||||
|
|
||||||
|
FINAL ASSEMBLER
|
||||||
|
Score: 770
|
||||||
|
|
||||||
|
//SEG0 Basic Upstart
|
||||||
|
.pc = $801 "Basic"
|
||||||
|
:BasicUpstart(main)
|
||||||
|
.pc = $80d "Program"
|
||||||
|
//SEG1 Global Constants & labels
|
||||||
|
.label BORDERCOL = $d020
|
||||||
|
.label SCREEN = $400
|
||||||
|
//SEG2 @begin
|
||||||
|
//SEG3 [1] phi from @begin to @3 [phi:@begin->@3]
|
||||||
|
//SEG4 @3
|
||||||
|
//SEG5 [2] call main param-assignment [ ] ( )
|
||||||
|
//SEG6 [4] phi from @3 to main [phi:@3->main]
|
||||||
|
jsr main
|
||||||
|
//SEG7 [3] phi from @3 to @end [phi:@3->@end]
|
||||||
|
//SEG8 @end
|
||||||
|
//SEG9 main
|
||||||
|
main: {
|
||||||
|
//SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||||
|
//SEG11 [16] phi from main to print_cls [phi:main->print_cls]
|
||||||
|
jsr print_cls
|
||||||
|
//SEG12 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||||
|
//SEG13 main::@1
|
||||||
|
//SEG14 [7] call mode_ctrl param-assignment [ ] ( main:2 [ ] )
|
||||||
|
//SEG15 [9] phi from main::@1 to mode_ctrl [phi:main::@1->mode_ctrl]
|
||||||
|
jsr mode_ctrl
|
||||||
|
//SEG16 main::@return
|
||||||
|
//SEG17 [8] return [ ] ( main:2 [ ] )
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
//SEG18 mode_ctrl
|
||||||
|
mode_ctrl: {
|
||||||
|
//SEG19 mode_ctrl::@1
|
||||||
|
//SEG20 [10] if(true) goto mode_ctrl::@2 [ ] ( main:2::mode_ctrl:7 [ ] ) -- true_then_la1
|
||||||
|
//SEG21 mode_ctrl::@return
|
||||||
|
//SEG22 [11] return [ ] ( main:2::mode_ctrl:7 [ ] )
|
||||||
|
//SEG23 mode_ctrl::@2
|
||||||
|
b2:
|
||||||
|
//SEG24 [12] (byte) mode_ctrl::before#0 ← *((const byte*) BORDERCOL#0) [ mode_ctrl::before#0 ] ( main:2::mode_ctrl:7 [ mode_ctrl::before#0 ] ) -- vbuaa=_deref_pbuc1
|
||||||
|
lda BORDERCOL
|
||||||
|
//SEG25 [13] if((byte) mode_ctrl::before#0!=(byte/word/signed word/dword/signed dword) 255) goto mode_ctrl::@4 [ ] ( main:2::mode_ctrl:7 [ ] ) -- vbuaa_neq_vbuc1_then_la1
|
||||||
|
cmp #$ff
|
||||||
|
bne b4
|
||||||
|
//SEG26 mode_ctrl::@8
|
||||||
|
//SEG27 [14] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::mode_ctrl:7 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #2
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b2
|
||||||
|
//SEG28 mode_ctrl::@4
|
||||||
|
b4:
|
||||||
|
//SEG29 [15] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2::mode_ctrl:7 [ ] ) -- _deref_pbuc1=vbuc2
|
||||||
|
lda #3
|
||||||
|
sta BORDERCOL
|
||||||
|
jmp b2
|
||||||
|
}
|
||||||
|
//SEG30 print_cls
|
||||||
|
print_cls: {
|
||||||
|
.label sc = 2
|
||||||
|
//SEG31 [17] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||||
|
//SEG32 [17] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||||
|
lda #<SCREEN
|
||||||
|
sta sc
|
||||||
|
lda #>SCREEN
|
||||||
|
sta sc+1
|
||||||
|
//SEG33 [17] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||||
|
//SEG34 [17] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy
|
||||||
|
//SEG35 print_cls::@1
|
||||||
|
b1:
|
||||||
|
//SEG36 [18] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
|
||||||
|
lda #' '
|
||||||
|
ldy #0
|
||||||
|
sta (sc),y
|
||||||
|
//SEG37 [19] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
|
||||||
|
inc sc
|
||||||
|
bne !+
|
||||||
|
inc sc+1
|
||||||
|
!:
|
||||||
|
//SEG38 [20] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1
|
||||||
|
lda sc+1
|
||||||
|
cmp #>SCREEN+$3e8
|
||||||
|
bne b1
|
||||||
|
lda sc
|
||||||
|
cmp #<SCREEN+$3e8
|
||||||
|
bne b1
|
||||||
|
//SEG39 print_cls::@return
|
||||||
|
//SEG40 [21] return [ ] ( main:2::print_cls:5 [ ] )
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
|
27
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.sym
Normal file
27
src/test/java/dk/camelot64/kickc/test/ref/loop-problem2.sym
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
(label) @3
|
||||||
|
(label) @begin
|
||||||
|
(label) @end
|
||||||
|
(byte*) BORDERCOL
|
||||||
|
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||||
|
(byte*) SCREEN
|
||||||
|
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||||
|
(void()) main()
|
||||||
|
(label) main::@1
|
||||||
|
(label) main::@return
|
||||||
|
(void()) mode_ctrl()
|
||||||
|
(label) mode_ctrl::@1
|
||||||
|
(label) mode_ctrl::@2
|
||||||
|
(label) mode_ctrl::@4
|
||||||
|
(label) mode_ctrl::@8
|
||||||
|
(label) mode_ctrl::@return
|
||||||
|
(byte) mode_ctrl::before
|
||||||
|
(byte) mode_ctrl::before#0 reg byte a 22.0
|
||||||
|
(void()) print_cls()
|
||||||
|
(label) print_cls::@1
|
||||||
|
(label) print_cls::@return
|
||||||
|
(byte*) print_cls::sc
|
||||||
|
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||||
|
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||||
|
|
||||||
|
zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||||
|
reg byte a [ mode_ctrl::before#0 ]
|
Loading…
Reference in New Issue
Block a user