mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-14 09:30:57 +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());
|
||||
}
|
||||
|
||||
// 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()) {
|
||||
Set<NaturalLoop> headLoops = loopSet.getLoopsFromHead(loop.getHead());
|
||||
for(NaturalLoop other : headLoops) {
|
||||
@ -80,11 +94,11 @@ public class Pass3LoopAnalysis extends Pass2Base {
|
||||
loop.addBlocks(other.getBlocks());
|
||||
loopSet.remove(other);
|
||||
getLog().append("Coalesced: " + loop.toString());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getProgram().setLoopSet(loopSet);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -48,12 +48,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testLoopProblem2() throws IOException, URISyntaxException {
|
||||
try {
|
||||
compileAndCompare("loop-problem2");
|
||||
} catch(ConcurrentModificationException e) {
|
||||
return;
|
||||
}
|
||||
fail("Exception expected!");
|
||||
}
|
||||
|
||||
@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
|
||||
void mode_ctrl() {
|
||||
while(true) {
|
||||
@ -134,19 +137,7 @@ void mode_ctrl() {
|
||||
if(keyboard_key_pressed(KEY_SPACE)!=0) {
|
||||
return;
|
||||
}
|
||||
mode_ctrl_keys();
|
||||
}
|
||||
}
|
||||
|
||||
// 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;
|
||||
// Read the current control byte
|
||||
byte ctrl = dtv_control;
|
||||
// Test for control keys
|
||||
if(keyboard_key_pressed(KEY_L)!=0) {
|
||||
@ -177,6 +168,7 @@ void mode_ctrl_keys() {
|
||||
// DTV Graphics Mode - Reset
|
||||
ctrl = 0;
|
||||
}
|
||||
// If the control byte is modified - write it
|
||||
if(ctrl != dtv_control) {
|
||||
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)
|
||||
// Resolution: 320x200
|
||||
// Normal VIC Adressing:
|
||||
|
@ -14,7 +14,7 @@ void print_cls() {
|
||||
|
||||
void mode_ctrl() {
|
||||
while(true) {
|
||||
byte before = 0;
|
||||
byte before = *BORDERCOL;
|
||||
if(before==$ff) {
|
||||
*BORDERCOL = 2;
|
||||
} else {
|
||||
|
@ -76,6 +76,7 @@
|
||||
.const KEY_2 = $3b
|
||||
.const KEY_SPACE = $3c
|
||||
.label print_char_cursor = 5
|
||||
.label dtv_control = 2
|
||||
.label print_line_cursor = $d
|
||||
jsr main
|
||||
main: {
|
||||
@ -86,7 +87,8 @@ main: {
|
||||
sta PROCPORT
|
||||
lda #DTV_FEATURE_ENABLE
|
||||
sta DTV_FEATURE
|
||||
ldx #0
|
||||
lda #0
|
||||
sta dtv_control
|
||||
b2:
|
||||
jsr menu
|
||||
jmp b2
|
||||
@ -94,7 +96,7 @@ main: {
|
||||
menu: {
|
||||
.label SCREEN = $8000
|
||||
.label CHARSET = $9800
|
||||
.label c = 2
|
||||
.label c = 3
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -112,12 +114,12 @@ menu: {
|
||||
sta VIC_CONTROL2
|
||||
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
|
||||
sta VIC_MEMORY
|
||||
ldy #0
|
||||
ldx #0
|
||||
b1:
|
||||
lda DTV_PALETTE_DEFAULT,y
|
||||
sta DTV_PALETTE,y
|
||||
iny
|
||||
cpy #$10
|
||||
lda DTV_PALETTE_DEFAULT,x
|
||||
sta DTV_PALETTE,x
|
||||
inx
|
||||
cpx #$10
|
||||
bne b1
|
||||
lda #<COLS
|
||||
sta c
|
||||
@ -237,8 +239,8 @@ mode_8bppchunkybmm: {
|
||||
.const PLANEB = $20000
|
||||
.label _23 = $d
|
||||
.label gfxb = 5
|
||||
.label x = 2
|
||||
.label y = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
||||
@ -322,7 +324,8 @@ mode_8bppchunkybmm: {
|
||||
bne b2
|
||||
lda #$4000/$4000
|
||||
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
|
||||
rts
|
||||
}
|
||||
@ -340,83 +343,67 @@ mode_ctrl: {
|
||||
beq b7
|
||||
jmp breturn
|
||||
b7:
|
||||
jsr mode_ctrl_keys
|
||||
jmp b4
|
||||
}
|
||||
mode_ctrl_keys: {
|
||||
.label ctrl = 4
|
||||
cpx #$ff
|
||||
bne b1
|
||||
lda #2
|
||||
sta BORDERCOL
|
||||
breturn:
|
||||
rts
|
||||
b1:
|
||||
stx BORDERCOL
|
||||
stx ctrl
|
||||
ldx dtv_control
|
||||
ldy #KEY_L
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b3
|
||||
lda #DTV_LINEAR
|
||||
ora ctrl
|
||||
sta ctrl
|
||||
b3:
|
||||
beq b8
|
||||
txa
|
||||
ora #DTV_LINEAR
|
||||
tax
|
||||
b8:
|
||||
ldy #KEY_H
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b4
|
||||
lda #DTV_HIGHCOLOR
|
||||
ora ctrl
|
||||
sta ctrl
|
||||
b4:
|
||||
beq b9
|
||||
txa
|
||||
ora #DTV_HIGHCOLOR
|
||||
tax
|
||||
b9:
|
||||
ldy #KEY_O
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b5
|
||||
lda #DTV_OVERSCAN
|
||||
ora ctrl
|
||||
sta ctrl
|
||||
b5:
|
||||
beq b10
|
||||
txa
|
||||
ora #DTV_OVERSCAN
|
||||
tax
|
||||
b10:
|
||||
ldy #KEY_B
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b6
|
||||
lda #DTV_BORDER_OFF
|
||||
ora ctrl
|
||||
sta ctrl
|
||||
b6:
|
||||
beq b11
|
||||
txa
|
||||
ora #DTV_BORDER_OFF
|
||||
tax
|
||||
b11:
|
||||
ldy #KEY_U
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b7
|
||||
lda #DTV_CHUNKY
|
||||
ora ctrl
|
||||
sta ctrl
|
||||
b7:
|
||||
beq b12
|
||||
txa
|
||||
ora #DTV_CHUNKY
|
||||
tax
|
||||
b12:
|
||||
ldy #KEY_C
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b8
|
||||
lda #DTV_COLORRAM_OFF
|
||||
ora ctrl
|
||||
sta ctrl
|
||||
b8:
|
||||
beq b13
|
||||
txa
|
||||
ora #DTV_COLORRAM_OFF
|
||||
tax
|
||||
b13:
|
||||
ldy #KEY_0
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b9
|
||||
lda #0
|
||||
sta ctrl
|
||||
b9:
|
||||
cpx ctrl
|
||||
beq breturn
|
||||
ldx ctrl
|
||||
txa
|
||||
sta DTV_CONTROL
|
||||
txa
|
||||
sta BORDERCOL
|
||||
jmp breturn
|
||||
beq b14
|
||||
ldx #0
|
||||
b14:
|
||||
cpx dtv_control
|
||||
beq b4
|
||||
stx dtv_control
|
||||
stx DTV_CONTROL
|
||||
stx BORDERCOL
|
||||
jmp b4
|
||||
}
|
||||
keyboard_key_pressed: {
|
||||
.label colidx = 7
|
||||
@ -452,14 +439,14 @@ mode_8bpppixelcell: {
|
||||
.label PLANEA = $3c00
|
||||
.label PLANEB = $4000
|
||||
.label _14 = 7
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label bits = 8
|
||||
.label chargen = 2
|
||||
.label chargen = 3
|
||||
.label gfxb = 5
|
||||
.label col = 9
|
||||
.label cr = 7
|
||||
.label ch = 4
|
||||
.label ch = 2
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
||||
@ -581,7 +568,8 @@ mode_8bpppixelcell: {
|
||||
bne b4
|
||||
lda #PROCPORT_RAM_IO
|
||||
sta PROCPORT
|
||||
ldx #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
}
|
||||
@ -589,12 +577,12 @@ mode_sixsfred: {
|
||||
.label PLANEA = $4000
|
||||
.label PLANEB = $6000
|
||||
.label COLORS = $8000
|
||||
.label col = 2
|
||||
.label cy = 4
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label gfxb = 2
|
||||
.label by = 4
|
||||
.label col = 3
|
||||
.label cy = 2
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label gfxb = 3
|
||||
.label by = 2
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
@ -712,7 +700,8 @@ mode_sixsfred: {
|
||||
lda by
|
||||
cmp #$c8
|
||||
bne b6
|
||||
ldx #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
row_bitmask: .byte 0, $55, $aa, $ff
|
||||
@ -722,12 +711,12 @@ mode_twoplanebitmap: {
|
||||
.label PLANEB = $6000
|
||||
.label COLORS = $8000
|
||||
.label _16 = 7
|
||||
.label col = 2
|
||||
.label cy = 4
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label gfxb = 2
|
||||
.label by = 4
|
||||
.label col = 3
|
||||
.label cy = 2
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label gfxb = 3
|
||||
.label by = 2
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
@ -856,7 +845,8 @@ mode_twoplanebitmap: {
|
||||
lda by
|
||||
cmp #$c8
|
||||
bne b8
|
||||
ldx #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
b6:
|
||||
@ -874,12 +864,12 @@ mode_sixsfred2: {
|
||||
.label PLANEB = $6000
|
||||
.label COLORS = $8000
|
||||
.label _15 = 7
|
||||
.label col = 2
|
||||
.label cy = 4
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label gfxb = 2
|
||||
.label by = 4
|
||||
.label col = 3
|
||||
.label cy = 2
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label gfxb = 3
|
||||
.label by = 2
|
||||
lda #DTV_LINEAR
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
@ -1003,7 +993,8 @@ mode_sixsfred2: {
|
||||
lda by
|
||||
cmp #$c8
|
||||
bne b6
|
||||
ldx #DTV_LINEAR
|
||||
lda #DTV_LINEAR
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
row_bitmask: .byte 0, $55, $aa, $ff
|
||||
@ -1013,9 +1004,9 @@ mode_hicolmcchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $8400
|
||||
.label _26 = 7
|
||||
.label col = 2
|
||||
.label col = 3
|
||||
.label ch = 5
|
||||
.label cy = 4
|
||||
.label cy = 2
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #COLORS/$400
|
||||
@ -1091,7 +1082,8 @@ mode_hicolmcchar: {
|
||||
lda cy
|
||||
cmp #$19
|
||||
bne b2
|
||||
ldx #DTV_HIGHCOLOR
|
||||
lda #DTV_HIGHCOLOR
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
}
|
||||
@ -1100,9 +1092,9 @@ mode_hicolecmchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $8400
|
||||
.label _26 = 7
|
||||
.label col = 2
|
||||
.label col = 3
|
||||
.label ch = 5
|
||||
.label cy = 4
|
||||
.label cy = 2
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #COLORS/$400
|
||||
@ -1180,7 +1172,8 @@ mode_hicolecmchar: {
|
||||
lda cy
|
||||
cmp #$19
|
||||
bne b2
|
||||
ldx #DTV_HIGHCOLOR
|
||||
lda #DTV_HIGHCOLOR
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
}
|
||||
@ -1189,9 +1182,9 @@ mode_hicolstdchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $8400
|
||||
.label _25 = 7
|
||||
.label col = 2
|
||||
.label col = 3
|
||||
.label ch = 5
|
||||
.label cy = 4
|
||||
.label cy = 2
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #COLORS/$400
|
||||
@ -1262,7 +1255,8 @@ mode_hicolstdchar: {
|
||||
lda cy
|
||||
cmp #$19
|
||||
bne b2
|
||||
ldx #DTV_HIGHCOLOR
|
||||
lda #DTV_HIGHCOLOR
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
}
|
||||
@ -1271,9 +1265,9 @@ mode_stdbitmap: {
|
||||
.label BITMAP = $6000
|
||||
.const lines_cnt = 9
|
||||
.label col2 = 7
|
||||
.label ch = 2
|
||||
.label cy = 4
|
||||
.label l = 4
|
||||
.label ch = 3
|
||||
.label cy = 2
|
||||
.label l = 2
|
||||
lda #($ffffffff&BITMAP)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #0
|
||||
@ -1355,7 +1349,8 @@ mode_stdbitmap: {
|
||||
lda l
|
||||
cmp #lines_cnt
|
||||
bcc b4
|
||||
ldx #0
|
||||
lda #0
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
lines_x: .byte 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80
|
||||
@ -1492,8 +1487,8 @@ bitmap_line_ydxi: {
|
||||
rts
|
||||
}
|
||||
bitmap_plot: {
|
||||
.label _0 = 2
|
||||
.label plotter_x = 2
|
||||
.label _0 = 3
|
||||
.label plotter_x = 3
|
||||
.label plotter_y = 5
|
||||
lda bitmap_plot_xhi,x
|
||||
sta plotter_x+1
|
||||
@ -1617,9 +1612,9 @@ bitmap_line_xdyd: {
|
||||
rts
|
||||
}
|
||||
bitmap_clear: {
|
||||
.label bitmap = 2
|
||||
.label y = 4
|
||||
.label _3 = 2
|
||||
.label bitmap = 3
|
||||
.label y = 2
|
||||
.label _3 = 3
|
||||
lda bitmap_plot_xlo+0
|
||||
sta _3
|
||||
lda bitmap_plot_xhi+0
|
||||
@ -1646,8 +1641,8 @@ bitmap_clear: {
|
||||
rts
|
||||
}
|
||||
bitmap_init: {
|
||||
.label _6 = 4
|
||||
.label yoffs = 2
|
||||
.label _6 = 2
|
||||
.label yoffs = 3
|
||||
ldy #$80
|
||||
ldx #0
|
||||
b1:
|
||||
@ -1703,9 +1698,9 @@ mode_mcchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $d800
|
||||
.label _28 = 7
|
||||
.label col = 2
|
||||
.label col = 3
|
||||
.label ch = 5
|
||||
.label cy = 4
|
||||
.label cy = 2
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -1784,7 +1779,8 @@ mode_mcchar: {
|
||||
lda cy
|
||||
cmp #$19
|
||||
bne b2
|
||||
ldx #0
|
||||
lda #0
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
}
|
||||
@ -1793,9 +1789,9 @@ mode_ecmchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $d800
|
||||
.label _28 = 7
|
||||
.label col = 2
|
||||
.label col = 3
|
||||
.label ch = 5
|
||||
.label cy = 4
|
||||
.label cy = 2
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -1875,7 +1871,8 @@ mode_ecmchar: {
|
||||
lda cy
|
||||
cmp #$19
|
||||
bne b2
|
||||
ldx #0
|
||||
lda #0
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
}
|
||||
@ -1884,9 +1881,9 @@ mode_stdchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $d800
|
||||
.label _27 = 7
|
||||
.label col = 2
|
||||
.label col = 3
|
||||
.label ch = 5
|
||||
.label cy = 4
|
||||
.label cy = 2
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -1960,12 +1957,13 @@ mode_stdchar: {
|
||||
lda cy
|
||||
cmp #$19
|
||||
bne b2
|
||||
ldx #0
|
||||
lda #0
|
||||
sta dtv_control
|
||||
jsr mode_ctrl
|
||||
rts
|
||||
}
|
||||
print_str_lines: {
|
||||
.label str = 2
|
||||
.label str = 3
|
||||
lda #<menu.SCREEN
|
||||
sta print_line_cursor
|
||||
lda #>menu.SCREEN
|
||||
@ -2029,7 +2027,7 @@ print_ln: {
|
||||
rts
|
||||
}
|
||||
print_cls: {
|
||||
.label sc = 2
|
||||
.label sc = 3
|
||||
lda #<menu.SCREEN
|
||||
sta sc
|
||||
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) @end
|
||||
(byte*) BGCOL
|
||||
@ -154,26 +154,26 @@
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(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::@2
|
||||
(label) bitmap_clear::@3
|
||||
(label) bitmap_clear::@return
|
||||
(byte*) bitmap_clear::bitmap
|
||||
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:2 1552.0
|
||||
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:2 204.0
|
||||
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:2 4.0
|
||||
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 1552.0
|
||||
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 204.0
|
||||
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0
|
||||
(byte) bitmap_clear::x
|
||||
(byte) bitmap_clear::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_clear::x#2 reg byte x 667.3333333333334
|
||||
(byte) bitmap_clear::y
|
||||
(byte) bitmap_clear::y#1 y zp ZP_BYTE:4 151.5
|
||||
(byte) bitmap_clear::y#4 y zp ZP_BYTE:4 33.666666666666664
|
||||
(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 151.5
|
||||
(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 33.666666666666664
|
||||
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
||||
(byte~) bitmap_init::$0 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::$8 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#2 reg byte x 55.090909090909086
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:2 202.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:2 56.11111111111111
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:2 101.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 202.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 56.11111111111111
|
||||
(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)
|
||||
(label) bitmap_line::@1
|
||||
(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#5 yd zp ZP_BYTE:8 143.28571428571428
|
||||
(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
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(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#0 plotter_y zp ZP_WORD:5 4.0
|
||||
(byte) bitmap_plot::x
|
||||
@ -422,12 +422,11 @@
|
||||
(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 2002.0
|
||||
(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 1003.0
|
||||
(byte) dtv_control
|
||||
(byte) dtv_control#1 reg byte x 1.2727272727272727
|
||||
(byte) dtv_control#119 reg byte x 1.4946236559139783
|
||||
(byte) dtv_control#153 reg byte x 2.0
|
||||
(byte) dtv_control#18 reg byte x 1.3333333333333333
|
||||
(byte) dtv_control#19 reg byte x 35.66666666666666
|
||||
(byte) dtv_control#3 reg byte x 45.3333333333333
|
||||
(byte) dtv_control#1 dtv_control zp ZP_BYTE:2 1.2727272727272727
|
||||
(byte) dtv_control#114 dtv_control zp ZP_BYTE:2 24.19318181818182
|
||||
(byte) dtv_control#145 dtv_control zp ZP_BYTE:2 2.0
|
||||
(byte) dtv_control#17 dtv_control zp ZP_BYTE:2 67.33333333333333
|
||||
(byte) dtv_control#3 dtv_control zp ZP_BYTE:2 45.3333333333333
|
||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
||||
(label) keyboard_key_pressed::@2
|
||||
@ -437,20 +436,20 @@
|
||||
(byte) keyboard_key_pressed::key
|
||||
(byte) keyboard_key_pressed::key#20 reg byte y 2.0
|
||||
(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#11 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#14 reg byte a 202.0
|
||||
(byte) keyboard_key_pressed::return#15 reg byte a 4.0
|
||||
(byte) keyboard_key_pressed::return#16 reg byte a 4.0
|
||||
(byte) keyboard_key_pressed::return#17 reg byte a 4.0
|
||||
(byte) keyboard_key_pressed::return#18 reg byte a 4.0
|
||||
(byte) keyboard_key_pressed::return#19 reg byte a 4.0
|
||||
(byte) keyboard_key_pressed::return#14 reg byte a 2002.0
|
||||
(byte) keyboard_key_pressed::return#15 reg byte a 2002.0
|
||||
(byte) keyboard_key_pressed::return#16 reg byte a 2002.0
|
||||
(byte) keyboard_key_pressed::return#17 reg byte a 2002.0
|
||||
(byte) keyboard_key_pressed::return#18 reg byte a 2002.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#20 reg byte a 4.0
|
||||
(byte) keyboard_key_pressed::return#21 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 2002.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#26 reg byte a 202.0
|
||||
@ -537,11 +536,11 @@
|
||||
(byte*) menu::SCREEN
|
||||
(const byte*) menu::SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 32768
|
||||
(byte*) menu::c
|
||||
(byte*) menu::c#1 c zp ZP_WORD:2 151.5
|
||||
(byte*) menu::c#2 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:3 151.5
|
||||
(byte) menu::i
|
||||
(byte) menu::i#1 reg byte y 151.5
|
||||
(byte) menu::i#2 reg byte y 202.0
|
||||
(byte) menu::i#1 reg byte x 151.5
|
||||
(byte) menu::i#2 reg byte x 202.0
|
||||
(void()) mode_8bppchunkybmm()
|
||||
(word~) mode_8bppchunkybmm::$23 $23 zp ZP_WORD:13 2002.0
|
||||
(label) mode_8bppchunkybmm::@1
|
||||
@ -573,11 +572,11 @@
|
||||
(byte) mode_8bppchunkybmm::i#1 reg byte x 151.5
|
||||
(byte) mode_8bppchunkybmm::i#2 reg byte x 202.0
|
||||
(word) mode_8bppchunkybmm::x
|
||||
(word) mode_8bppchunkybmm::x#1 x zp ZP_WORD:2 1501.5
|
||||
(word) mode_8bppchunkybmm::x#2 x zp ZP_WORD:2 300.29999999999995
|
||||
(word) mode_8bppchunkybmm::x#1 x zp ZP_WORD:3 1501.5
|
||||
(word) mode_8bppchunkybmm::x#2 x zp ZP_WORD:3 300.29999999999995
|
||||
(byte) mode_8bppchunkybmm::y
|
||||
(byte) mode_8bppchunkybmm::y#1 y zp ZP_BYTE:4 151.5
|
||||
(byte) mode_8bppchunkybmm::y#6 y zp ZP_BYTE:4 92.53846153846155
|
||||
(byte) mode_8bppchunkybmm::y#1 y zp ZP_BYTE:2 151.5
|
||||
(byte) mode_8bppchunkybmm::y#6 y zp ZP_BYTE:2 92.53846153846155
|
||||
(void()) mode_8bpppixelcell()
|
||||
(byte~) mode_8bpppixelcell::$13 reg byte a 2002.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#2 reg byte x 429.0
|
||||
(byte) mode_8bpppixelcell::ay
|
||||
(byte) mode_8bpppixelcell::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_8bpppixelcell::ay#4 ay zp ZP_BYTE:4 120.29999999999998
|
||||
(byte) mode_8bpppixelcell::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_8bpppixelcell::ay#4 ay zp ZP_BYTE:2 120.29999999999998
|
||||
(byte) mode_8bpppixelcell::bits
|
||||
(byte) mode_8bpppixelcell::bits#0 bits zp ZP_BYTE:8 1001.0
|
||||
(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#3 reg byte a 20002.0
|
||||
(byte) mode_8bpppixelcell::ch
|
||||
(byte) mode_8bpppixelcell::ch#1 ch zp ZP_BYTE:4 151.5
|
||||
(byte) mode_8bpppixelcell::ch#8 ch zp ZP_BYTE:4 11.882352941176471
|
||||
(byte) mode_8bpppixelcell::ch#1 ch zp ZP_BYTE:2 151.5
|
||||
(byte) mode_8bpppixelcell::ch#8 ch zp ZP_BYTE:2 11.882352941176471
|
||||
(byte*) mode_8bpppixelcell::chargen
|
||||
(byte*) mode_8bpppixelcell::chargen#1 chargen zp ZP_WORD:2 131.4375
|
||||
(byte*) mode_8bpppixelcell::chargen#2 chargen zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_8bpppixelcell::chargen#4 chargen zp ZP_WORD:2 202.0
|
||||
(byte*) mode_8bpppixelcell::chargen#1 chargen zp ZP_WORD:3 131.4375
|
||||
(byte*) mode_8bpppixelcell::chargen#2 chargen zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_8bpppixelcell::chargen#4 chargen zp ZP_WORD:3 202.0
|
||||
(byte) mode_8bpppixelcell::col
|
||||
(byte) mode_8bpppixelcell::col#1 col zp ZP_BYTE:9 3014.857142857143
|
||||
(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#6 cr zp ZP_BYTE:7 143.0
|
||||
(byte*) mode_8bpppixelcell::gfxa
|
||||
(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_8bpppixelcell::gfxb
|
||||
(byte*) mode_8bpppixelcell::gfxb#1 gfxb zp ZP_WORD:5 2344.8888888888887
|
||||
(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#2 reg byte x 202.0
|
||||
(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::@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::@46
|
||||
(label) mode_ctrl::@6
|
||||
(label) mode_ctrl::@7
|
||||
(label) mode_ctrl::@8
|
||||
(label) mode_ctrl::@9
|
||||
(label) mode_ctrl::@return
|
||||
(void()) mode_ctrl_keys()
|
||||
(byte~) mode_ctrl_keys::$10 reg byte a 4.0
|
||||
(byte~) mode_ctrl_keys::$14 reg byte a 4.0
|
||||
(byte~) mode_ctrl_keys::$18 reg byte a 4.0
|
||||
(byte~) mode_ctrl_keys::$2 reg byte a 4.0
|
||||
(byte~) mode_ctrl_keys::$22 reg byte a 4.0
|
||||
(byte~) mode_ctrl_keys::$26 reg byte a 4.0
|
||||
(byte~) mode_ctrl_keys::$6 reg byte a 4.0
|
||||
(label) mode_ctrl_keys::@1
|
||||
(label) mode_ctrl_keys::@11
|
||||
(label) mode_ctrl_keys::@13
|
||||
(label) mode_ctrl_keys::@14
|
||||
(label) mode_ctrl_keys::@15
|
||||
(label) mode_ctrl_keys::@16
|
||||
(label) mode_ctrl_keys::@17
|
||||
(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
|
||||
(byte) mode_ctrl::ctrl
|
||||
(byte) mode_ctrl::ctrl#0 reg byte x 600.5999999999999
|
||||
(byte) mode_ctrl::ctrl#1 reg byte x 2002.0
|
||||
(byte) mode_ctrl::ctrl#10 reg byte x 800.8
|
||||
(byte) mode_ctrl::ctrl#11 reg byte x 800.8
|
||||
(byte) mode_ctrl::ctrl#12 reg byte x 800.8
|
||||
(byte) mode_ctrl::ctrl#13 reg byte x 800.8
|
||||
(byte) mode_ctrl::ctrl#14 reg byte x 576.25
|
||||
(byte) mode_ctrl::ctrl#17 reg byte x 800.8
|
||||
(byte) mode_ctrl::ctrl#2 reg byte x 2002.0
|
||||
(byte) mode_ctrl::ctrl#22 reg byte x 500.5
|
||||
(byte) mode_ctrl::ctrl#3 reg byte x 2002.0
|
||||
(byte) mode_ctrl::ctrl#4 reg byte x 2002.0
|
||||
(byte) mode_ctrl::ctrl#5 reg byte x 2002.0
|
||||
(byte) mode_ctrl::ctrl#6 reg byte x 2002.0
|
||||
(void()) mode_ecmchar()
|
||||
(byte~) mode_ecmchar::$25 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#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_ecmchar::col
|
||||
(byte*) mode_ecmchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
||||
(byte*) mode_ecmchar::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_ecmchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_ecmchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||
(byte*) mode_ecmchar::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_ecmchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_ecmchar::cx
|
||||
(byte) mode_ecmchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_ecmchar::cx#2 reg byte x 364.0
|
||||
(byte) mode_ecmchar::cy
|
||||
(byte) mode_ecmchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_ecmchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
||||
(byte) mode_ecmchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_ecmchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||
(byte) mode_ecmchar::i
|
||||
(byte) mode_ecmchar::i#1 reg byte x 151.5
|
||||
(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#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_hicolecmchar::col
|
||||
(byte*) mode_hicolecmchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
||||
(byte*) mode_hicolecmchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_hicolecmchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_hicolecmchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||
(byte*) mode_hicolecmchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_hicolecmchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_hicolecmchar::cx
|
||||
(byte) mode_hicolecmchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_hicolecmchar::cx#2 reg byte x 333.6666666666667
|
||||
(byte) mode_hicolecmchar::cy
|
||||
(byte) mode_hicolecmchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_hicolecmchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
||||
(byte) mode_hicolecmchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_hicolecmchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||
(byte) mode_hicolecmchar::i
|
||||
(byte) mode_hicolecmchar::i#1 reg byte x 151.5
|
||||
(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#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_hicolmcchar::col
|
||||
(byte*) mode_hicolmcchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
||||
(byte*) mode_hicolmcchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_hicolmcchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_hicolmcchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||
(byte*) mode_hicolmcchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_hicolmcchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_hicolmcchar::cx
|
||||
(byte) mode_hicolmcchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_hicolmcchar::cx#2 reg byte x 333.6666666666667
|
||||
(byte) mode_hicolmcchar::cy
|
||||
(byte) mode_hicolmcchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_hicolmcchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
||||
(byte) mode_hicolmcchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_hicolmcchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||
(byte) mode_hicolmcchar::i
|
||||
(byte) mode_hicolmcchar::i#1 reg byte x 151.5
|
||||
(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#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_hicolstdchar::col
|
||||
(byte*) mode_hicolstdchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
||||
(byte*) mode_hicolstdchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_hicolstdchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_hicolstdchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||
(byte*) mode_hicolstdchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_hicolstdchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_hicolstdchar::cx
|
||||
(byte) mode_hicolstdchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_hicolstdchar::cx#2 reg byte x 333.6666666666667
|
||||
(byte) mode_hicolstdchar::cy
|
||||
(byte) mode_hicolstdchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_hicolstdchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
||||
(byte) mode_hicolstdchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_hicolstdchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||
(byte) mode_hicolstdchar::i
|
||||
(byte) mode_hicolstdchar::i#1 reg byte x 151.5
|
||||
(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#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_mcchar::col
|
||||
(byte*) mode_mcchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
||||
(byte*) mode_mcchar::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_mcchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_mcchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||
(byte*) mode_mcchar::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_mcchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_mcchar::cx
|
||||
(byte) mode_mcchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_mcchar::cx#2 reg byte x 364.0
|
||||
(byte) mode_mcchar::cy
|
||||
(byte) mode_mcchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_mcchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
||||
(byte) mode_mcchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_mcchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||
(byte) mode_mcchar::i
|
||||
(byte) mode_mcchar::i#1 reg byte x 151.5
|
||||
(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#2 reg byte x 400.4
|
||||
(byte) mode_sixsfred::ay
|
||||
(byte) mode_sixsfred::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred::ay#4 ay zp ZP_BYTE:4 150.375
|
||||
(byte) mode_sixsfred::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred::ay#4 ay zp ZP_BYTE:2 150.375
|
||||
(byte) mode_sixsfred::bx
|
||||
(byte) mode_sixsfred::bx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred::bx#2 reg byte x 667.3333333333334
|
||||
(byte) mode_sixsfred::by
|
||||
(byte) mode_sixsfred::by#1 by zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred::by#4 by zp ZP_BYTE:4 33.666666666666664
|
||||
(byte) mode_sixsfred::by#1 by zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||
(byte*) mode_sixsfred::col
|
||||
(byte*) mode_sixsfred::col#1 col zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_sixsfred::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_sixsfred::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_sixsfred::cx
|
||||
(byte) mode_sixsfred::cx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred::cx#2 reg byte x 600.5999999999999
|
||||
(byte) mode_sixsfred::cy
|
||||
(byte) mode_sixsfred::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred::cy#4 cy zp ZP_BYTE:4 150.375
|
||||
(byte) mode_sixsfred::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred::cy#4 cy zp ZP_BYTE:2 150.375
|
||||
(byte*) mode_sixsfred::gfxa
|
||||
(byte*) mode_sixsfred::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxa#2 gfxa zp ZP_WORD:2 776.0
|
||||
(byte*) mode_sixsfred::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxa#2 gfxa zp ZP_WORD:3 776.0
|
||||
(byte*) mode_sixsfred::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred::gfxb
|
||||
(byte*) mode_sixsfred::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_sixsfred::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_sixsfred::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||
(byte) mode_sixsfred::i
|
||||
(byte) mode_sixsfred::i#1 reg byte x 151.5
|
||||
(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#2 reg byte x 400.4
|
||||
(byte) mode_sixsfred2::ay
|
||||
(byte) mode_sixsfred2::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred2::ay#4 ay zp ZP_BYTE:4 150.375
|
||||
(byte) mode_sixsfred2::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred2::ay#4 ay zp ZP_BYTE:2 150.375
|
||||
(byte) mode_sixsfred2::bx
|
||||
(byte) mode_sixsfred2::bx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred2::bx#2 reg byte x 667.3333333333334
|
||||
(byte) mode_sixsfred2::by
|
||||
(byte) mode_sixsfred2::by#1 by zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred2::by#4 by zp ZP_BYTE:4 33.666666666666664
|
||||
(byte) mode_sixsfred2::by#1 by zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred2::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||
(byte*) mode_sixsfred2::col
|
||||
(byte*) mode_sixsfred2::col#1 col zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred2::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_sixsfred2::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred2::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred2::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_sixsfred2::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_sixsfred2::cx
|
||||
(byte) mode_sixsfred2::cx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred2::cx#2 reg byte x 429.0
|
||||
(byte) mode_sixsfred2::cy
|
||||
(byte) mode_sixsfred2::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred2::cy#4 cy zp ZP_BYTE:4 120.29999999999998
|
||||
(byte) mode_sixsfred2::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred2::cy#4 cy zp ZP_BYTE:2 120.29999999999998
|
||||
(byte*) mode_sixsfred2::gfxa
|
||||
(byte*) mode_sixsfred2::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxa#2 gfxa zp ZP_WORD:2 776.0
|
||||
(byte*) mode_sixsfred2::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred2::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxa#2 gfxa zp ZP_WORD:3 776.0
|
||||
(byte*) mode_sixsfred2::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred2::gfxb
|
||||
(byte*) mode_sixsfred2::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_sixsfred2::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred2::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_sixsfred2::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||
(byte) mode_sixsfred2::i
|
||||
(byte) mode_sixsfred2::i#1 reg byte x 151.5
|
||||
(byte) mode_sixsfred2::i#2 reg byte x 202.0
|
||||
@ -1026,9 +1021,9 @@
|
||||
(byte*) mode_stdbitmap::SCREEN
|
||||
(const byte*) mode_stdbitmap::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 16384
|
||||
(byte*) mode_stdbitmap::ch
|
||||
(byte*) mode_stdbitmap::ch#1 ch zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_stdbitmap::ch#2 ch zp ZP_WORD:2 443.42857142857144
|
||||
(byte*) mode_stdbitmap::ch#3 ch zp ZP_WORD:2 202.0
|
||||
(byte*) mode_stdbitmap::ch#1 ch zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_stdbitmap::ch#2 ch zp ZP_WORD:3 443.42857142857144
|
||||
(byte*) mode_stdbitmap::ch#3 ch zp ZP_WORD:3 202.0
|
||||
(byte) mode_stdbitmap::col
|
||||
(byte) mode_stdbitmap::col#0 reg byte y 1501.5
|
||||
(byte) mode_stdbitmap::col2
|
||||
@ -1037,14 +1032,14 @@
|
||||
(byte) mode_stdbitmap::cx#1 reg byte x 1501.5
|
||||
(byte) mode_stdbitmap::cx#2 reg byte x 375.375
|
||||
(byte) mode_stdbitmap::cy
|
||||
(byte) mode_stdbitmap::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_stdbitmap::cy#4 cy zp ZP_BYTE:4 109.36363636363637
|
||||
(byte) mode_stdbitmap::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_stdbitmap::cy#4 cy zp ZP_BYTE:2 109.36363636363637
|
||||
(byte) mode_stdbitmap::i
|
||||
(byte) mode_stdbitmap::i#1 reg byte x 151.5
|
||||
(byte) mode_stdbitmap::i#2 reg byte x 202.0
|
||||
(byte) mode_stdbitmap::l
|
||||
(byte) mode_stdbitmap::l#1 l zp ZP_BYTE:4 151.5
|
||||
(byte) mode_stdbitmap::l#2 l zp ZP_BYTE:4 100.99999999999999
|
||||
(byte) mode_stdbitmap::l#1 l zp ZP_BYTE:2 151.5
|
||||
(byte) mode_stdbitmap::l#2 l zp ZP_BYTE:2 100.99999999999999
|
||||
(byte) mode_stdbitmap::lines_cnt
|
||||
(const byte) mode_stdbitmap::lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(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#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_stdchar::col
|
||||
(byte*) mode_stdchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
||||
(byte*) mode_stdchar::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_stdchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_stdchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||
(byte*) mode_stdchar::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_stdchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_stdchar::cx
|
||||
(byte) mode_stdchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_stdchar::cx#2 reg byte x 364.0
|
||||
(byte) mode_stdchar::cy
|
||||
(byte) mode_stdchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_stdchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
||||
(byte) mode_stdchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_stdchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||
(byte) mode_stdchar::i
|
||||
(byte) mode_stdchar::i#1 reg byte x 151.5
|
||||
(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#2 reg byte x 250.25
|
||||
(byte) mode_twoplanebitmap::ay
|
||||
(byte) mode_twoplanebitmap::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_twoplanebitmap::ay#4 ay zp ZP_BYTE:4 109.36363636363637
|
||||
(byte) mode_twoplanebitmap::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_twoplanebitmap::ay#4 ay zp ZP_BYTE:2 109.36363636363637
|
||||
(byte) mode_twoplanebitmap::bx
|
||||
(byte) mode_twoplanebitmap::bx#1 reg byte x 1501.5
|
||||
(byte) mode_twoplanebitmap::bx#2 reg byte x 667.3333333333334
|
||||
(byte) mode_twoplanebitmap::by
|
||||
(byte) mode_twoplanebitmap::by#1 by zp ZP_BYTE:4 151.5
|
||||
(byte) mode_twoplanebitmap::by#4 by zp ZP_BYTE:4 33.666666666666664
|
||||
(byte) mode_twoplanebitmap::by#1 by zp ZP_BYTE:2 151.5
|
||||
(byte) mode_twoplanebitmap::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||
(byte*) mode_twoplanebitmap::col
|
||||
(byte*) mode_twoplanebitmap::col#1 col zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_twoplanebitmap::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte*) mode_twoplanebitmap::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_twoplanebitmap::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte) mode_twoplanebitmap::cx
|
||||
(byte) mode_twoplanebitmap::cx#1 reg byte x 1501.5
|
||||
(byte) mode_twoplanebitmap::cx#2 reg byte x 429.0
|
||||
(byte) mode_twoplanebitmap::cy
|
||||
(byte) mode_twoplanebitmap::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_twoplanebitmap::cy#4 cy zp ZP_BYTE:4 120.29999999999998
|
||||
(byte) mode_twoplanebitmap::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_twoplanebitmap::cy#4 cy zp ZP_BYTE:2 120.29999999999998
|
||||
(byte*) mode_twoplanebitmap::gfxa
|
||||
(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp ZP_WORD:2 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp ZP_WORD:2 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp ZP_WORD:2 1021.2
|
||||
(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp ZP_WORD:2 620.8
|
||||
(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp ZP_WORD:3 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp ZP_WORD:3 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp ZP_WORD:3 1021.2
|
||||
(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp ZP_WORD:3 620.8
|
||||
(byte*) mode_twoplanebitmap::gfxb
|
||||
(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
||||
(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||
(byte) mode_twoplanebitmap::i
|
||||
(byte) mode_twoplanebitmap::i#1 reg byte x 151.5
|
||||
(byte) mode_twoplanebitmap::i#2 reg byte x 202.0
|
||||
@ -1161,8 +1156,8 @@
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 151.5
|
||||
(byte*) print_cls::sc#2 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:3 151.5
|
||||
(byte*) print_line_cursor
|
||||
(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
|
||||
@ -1184,17 +1179,17 @@
|
||||
(byte) print_str_lines::ch
|
||||
(byte) print_str_lines::ch#0 reg byte a 667.3333333333334
|
||||
(byte*) print_str_lines::str
|
||||
(byte*) print_str_lines::str#0 str zp ZP_WORD:2 233.66666666666669
|
||||
(byte*) print_str_lines::str#2 str zp ZP_WORD:2 151.5
|
||||
(byte*) print_str_lines::str#3 str zp ZP_WORD:2 1552.0
|
||||
(byte*) print_str_lines::str#0 str zp ZP_WORD:3 233.66666666666669
|
||||
(byte*) print_str_lines::str#2 str zp ZP_WORD:3 151.5
|
||||
(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 ]
|
||||
reg byte y [ 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_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 x [ menu::i#2 menu::i#1 ]
|
||||
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 ]
|
||||
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 ]
|
||||
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 a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#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 [ mode_ctrl::$1 ]
|
||||
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 [ mode_ctrl_keys::$6 ]
|
||||
reg byte a [ mode_ctrl::$8 ]
|
||||
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 [ mode_ctrl_keys::$14 ]
|
||||
reg byte a [ mode_ctrl::$16 ]
|
||||
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 [ mode_ctrl_keys::$22 ]
|
||||
reg byte a [ mode_ctrl::$24 ]
|
||||
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 y [ keyboard_matrix_read::rowid#0 ]
|
||||
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…
x
Reference in New Issue
Block a user