From 2989f16593a3b3f2f32a6689ca20f1f773163867 Mon Sep 17 00:00:00 2001 From: Jesper Gravgaard Date: Wed, 20 Mar 2019 17:09:22 +0100 Subject: [PATCH] Added synthesis for using X/Y registers as intermediates when encountering pb.c1_derefidx_vbuyy/xx. --- .../AsmFragmentTemplateSynthesisRule.java | 10 + .../dk/camelot64/kickc/test/TestPrograms.java | 5 + src/test/kc/double-indexing-arrays.kc | 2 +- src/test/ref/c64dtv-gfxexplorer.asm | 262 ++- src/test/ref/c64dtv-gfxexplorer.log | 1575 ++++++++--------- src/test/ref/c64dtv-gfxexplorer.sym | 237 +-- src/test/ref/const-identification.asm | 14 +- src/test/ref/const-identification.log | 93 +- src/test/ref/const-identification.sym | 14 +- src/test/ref/double-indexing-arrays.asm | 61 +- src/test/ref/double-indexing-arrays.log | 309 ++-- src/test/ref/double-indexing-arrays.sym | 8 +- .../multiplexer/simple-multiplexer.asm | 47 +- .../multiplexer/simple-multiplexer.log | 297 ++-- .../multiplexer/simple-multiplexer.sym | 46 +- src/test/script/update-ref.sh | 2 +- 16 files changed, 1455 insertions(+), 1527 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java index e232bb5e3..3248643c3 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java @@ -526,18 +526,28 @@ class AsmFragmentTemplateSynthesisRule { synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuz1=(.*z1.*)", twoC1, null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x", mapC)); // Convert X/Y-based array indexing of a constant pointer into A-register by prefixing lda cn,x / lda cn,y ( ...pb.c1_derefidx_vbuxx... / ...pb.c1_derefidx_vbuyy... -> ...vb.aa... ) + + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", rvalAa+"|"+twoC1, "lda {c1},x", "$1=$2vb$3aa$4", null, mapC)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", rvalYy+"|"+twoC1, "ldy {c1},x", "$1=$2vb$3yy$4", null, mapC)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c1.*)pb(.)c1_derefidx_vbuxx(.*)", rvalAa, "lda {c1},x", "$1=$2vb$3aa$4", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*c1.*)", rvalAa, "lda {c1},x", "$1=$2vb$3aa$4", null, null)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*)", rvalAa+"|"+twoC1, "lda {c1},y", "$1=$2vb$3aa$4", null, mapC)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*)", rvalXx+"|"+twoC1, "ldx {c1},y", "$1=$2vb$3xx$4", null, mapC)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c1.*)pb(.)c1_derefidx_vbuyy(.*)", rvalAa, "lda {c1},y", "$1=$2vb$3aa$4", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*c1.*)", rvalAa, "lda {c1},y", "$1=$2vb$3aa$4", null, null)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuxx(.*)", rvalAa+"|"+twoC2, "lda {c2},x", "$1=$2vb$3aa$4", null, mapC3)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuxx(.*)", rvalYy+"|"+twoC2, "ldy {c2},x", "$1=$2vb$3yy$4", null, mapC3)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c2.*)pb(.)c2_derefidx_vbuxx(.*)", rvalAa, "lda {c2},x", "$1=$2vb$3aa$4", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuxx(.*c2.*)", rvalAa, "lda {c2},x", "$1=$2vb$3aa$4", null, null)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*)", rvalAa+"|"+twoC2, "lda {c2},y", "$1=$2vb$3aa$4", null, mapC3)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*)", rvalXx+"|"+twoC2, "ldx {c2},y", "$1=$2vb$3xx$4", null, mapC3)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c2.*)pb(.)c2_derefidx_vbuyy(.*)", rvalAa, "lda {c2},y", "$1=$2vb$3aa$4", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*c2.*)", rvalAa, "lda {c2},y", "$1=$2vb$3aa$4", null, null)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(.*)", rvalYy+"|"+twoZ1, "ldy {z1}", "$1_derefidx_vbuyy_$2", null, mapZ)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", rvalXx+"|"+twoZ1, "ldx {z1}", "$1_derefidx_vbuxx_$2_$3", null, mapZ)); synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+twoC1, "lda {c1},y", "vb$1aa_$2_$3", null, mapC)); diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 5683768e0..12899c6b3 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -1390,6 +1390,11 @@ public class TestPrograms { tester.testFile(filename, upliftCombinations, null); } + private void compileAndCompare(String filename, CompileLog log, int upliftCombinations) throws IOException, URISyntaxException { + TestPrograms tester = new TestPrograms(); + tester.testFile(filename, upliftCombinations, log); + } + private void testFile(String fileName, Integer upliftCombinations, CompileLog compileLog) throws IOException, URISyntaxException { System.out.println("Testing output for " + fileName); Compiler compiler = new Compiler(); diff --git a/src/test/kc/double-indexing-arrays.kc b/src/test/kc/double-indexing-arrays.kc index 539884ec2..d054cc011 100644 --- a/src/test/kc/double-indexing-arrays.kc +++ b/src/test/kc/double-indexing-arrays.kc @@ -8,7 +8,7 @@ byte* SCREEN = $0400; byte* COLS = $d800; void main() { - for (byte x: 0..200) { + for (byte register(y) x: 0..200) { SCREEN[x] = MAPDATA[x]; COLS[x] = COLORMAP1[MAPDATA[x]]; SCREEN[200+x] = MAPDATA[200+x]; diff --git a/src/test/ref/c64dtv-gfxexplorer.asm b/src/test/ref/c64dtv-gfxexplorer.asm index 5b52285af..cd40a1257 100644 --- a/src/test/ref/c64dtv-gfxexplorer.asm +++ b/src/test/ref/c64dtv-gfxexplorer.asm @@ -167,9 +167,9 @@ .label form_vic_bg3_lo = form_fields_val+$23 .label print_char_cursor = 5 .label print_line_cursor = $10 - .label keyboard_events_size = 9 - .label keyboard_modifiers = 2 - .label form_cursor_count = $e + .label keyboard_events_size = 8 + .label form_cursor_count = $d + .label form_field_idx = $e main: { sei // Disable normal interrupt (prevent keyboard reading glitches and allows to hide basic/kernal) @@ -183,8 +183,8 @@ main: { sta DTV_FEATURE jsr keyboard_init jsr gfx_init - ldx #0 - txa + lda #0 + sta form_field_idx sta keyboard_events_size lda #FORM_CURSOR_BLINK/2 sta form_cursor_count @@ -195,11 +195,11 @@ main: { } // Change graphics mode to show the selected graphics mode gfx_mode: { - .label _31 = $a + .label _31 = 9 .label _33 = 3 .label _35 = 3 .label _37 = 3 - .label _45 = $a + .label _45 = 9 .label _47 = 3 .label _49 = 3 .label _51 = 3 @@ -209,72 +209,71 @@ gfx_mode: { .label _65 = 2 .label _66 = 3 .label _68 = 3 - .label plane_a = $a - .label plane_b = $a + .label plane_a = 9 + .label plane_b = 9 .label vic_colors = 3 .label col = 5 - .label cx = 7 .label cy = 2 lda form_ctrl_line cmp #0 beq b12 - ldy #0|DTV_LINEAR + ldx #0|DTV_LINEAR jmp b1 b12: - ldy #0 + ldx #0 b1: lda form_ctrl_borof cmp #0 beq b2 - tya + txa ora #DTV_BORDER_OFF - tay + tax b2: lda form_ctrl_hicol cmp #0 beq b3 - tya + txa ora #DTV_HIGHCOLOR - tay + tax b3: lda form_ctrl_overs cmp #0 beq b4 - tya + txa ora #DTV_OVERSCAN - tay + tax b4: lda form_ctrl_colof cmp #0 beq b5 - tya + txa ora #DTV_COLORRAM_OFF - tay + tax b5: lda form_ctrl_chunk cmp #0 beq b6 - tya + txa ora #DTV_CHUNKY - tay + tax b6: - sty DTV_CONTROL + stx DTV_CONTROL lda form_ctrl_ecm cmp #0 beq b14 - ldy #VIC_DEN|VIC_RSEL|3|VIC_ECM + ldx #VIC_DEN|VIC_RSEL|3|VIC_ECM jmp b7 b14: - ldy #VIC_DEN|VIC_RSEL|3 + ldx #VIC_DEN|VIC_RSEL|3 b7: lda form_ctrl_bmm cmp #0 beq b8 - tya + txa ora #VIC_BMM - tay + tax b8: - sty VIC_CONTROL + stx VIC_CONTROL lda form_ctrl_mcm cmp #0 beq b16 @@ -290,10 +289,10 @@ gfx_mode: { asl asl ora form_a_start_lo - tay + tax lda form_a_pattern jsr get_plane - tya + txa clc adc plane_a sta plane_a @@ -345,10 +344,10 @@ gfx_mode: { asl asl ora form_b_start_lo - tay + tax lda form_b_pattern jsr get_plane - tya + txa clc adc plane_b sta plane_b @@ -439,8 +438,7 @@ gfx_mode: { lda #>COLS sta col+1 b10: - lda #0 - sta cx + ldx #0 b11: ldy #0 lda (vic_colors),y @@ -453,9 +451,8 @@ gfx_mode: { bne !+ inc vic_colors+1 !: - inc cx - lda cx - cmp #$28 + inx + cpx #$28 bne b11 inc cy lda cy @@ -496,13 +493,13 @@ gfx_mode: { lda form_dtv_palet cmp #0 beq b18 - ldy #0 + ldx #0 // DTV Palette - Grey Tones b13: - tya - sta DTV_PALETTE,y - iny - cpy #$10 + txa + sta DTV_PALETTE,x + inx + cpx #$10 bne b13 b19: lda RASTER @@ -515,12 +512,12 @@ gfx_mode: { rts // DTV Palette - default b18: - ldy #0 + ldx #0 b15: - 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 b15 jmp b19 } @@ -546,14 +543,13 @@ keyboard_event_get: { // Also stores current status of modifiers in keyboard_modifiers. keyboard_event_scan: { .label row_scan = $12 - .label keycode = 8 + .label keycode = 7 .label row = 2 - .label col = 7 lda #0 sta keycode sta row b1: - lda row + ldx row jsr keyboard_matrix_read sta row_scan ldy row @@ -573,58 +569,54 @@ keyboard_event_scan: { jsr keyboard_event_pressed cmp #0 beq b2 - lda #0|KEY_MODIFIER_LSHIFT - sta keyboard_modifiers + ldx #0|KEY_MODIFIER_LSHIFT jmp b9 b2: - lda #0 - sta keyboard_modifiers + ldx #0 b9: lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed cmp #0 beq b10 - lda #KEY_MODIFIER_RSHIFT - ora keyboard_modifiers - sta keyboard_modifiers + txa + ora #KEY_MODIFIER_RSHIFT + tax b10: lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed cmp #0 beq b11 - lda #KEY_MODIFIER_CTRL - ora keyboard_modifiers - sta keyboard_modifiers + txa + ora #KEY_MODIFIER_CTRL + tax b11: lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed cmp #0 beq breturn - lda #KEY_MODIFIER_COMMODORE - ora keyboard_modifiers - sta keyboard_modifiers + txa + ora #KEY_MODIFIER_COMMODORE + tax breturn: rts // Something has changed on the keyboard row - check each column b6: - lda #0 - sta col + ldx #0 b4: lda row_scan ldy row eor keyboard_scan_values,y - ldy col - and keyboard_matrix_col_bitmask,y + and keyboard_matrix_col_bitmask,x cmp #0 beq b5 lda keyboard_events_size cmp #8 beq b5 - lda row_scan - and keyboard_matrix_col_bitmask,y + lda keyboard_matrix_col_bitmask,x + and row_scan cmp #0 beq b7 // Key pressed @@ -634,9 +626,8 @@ keyboard_event_scan: { inc keyboard_events_size b5: inc keycode - inc col - lda col - cmp #8 + inx + cpx #8 bne b4 // Store the current keyboard status for the row to debounce lda row_scan @@ -654,10 +645,10 @@ keyboard_event_scan: { } // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed -// keyboard_event_pressed(byte zeropage(7) keycode) +// keyboard_event_pressed(byte zeropage(2) keycode) keyboard_event_pressed: { - .label row_bits = 8 - .label keycode = 7 + .label row_bits = 7 + .label keycode = 2 lda keycode lsr lsr @@ -677,10 +668,9 @@ keyboard_event_pressed: { // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. -// keyboard_matrix_read(byte register(A) rowid) +// keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - tay - lda keyboard_matrix_row_bitmask,y + lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A lda CIA1_PORT_B eor #$ff @@ -755,7 +745,7 @@ get_vic_charset: { // Get plane address from a plane index (from the form) // get_plane(byte register(A) idx) get_plane: { - .label return = $a + .label return = 9 cmp #0 beq b1 cmp #1 @@ -1009,13 +999,13 @@ form_mode: { sta DTV_PLANEA_START_MI lda #0 sta DTV_PLANEA_START_HI - tay + tax // DTV Palette - default 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 // Screen colors lda #0 @@ -1029,7 +1019,7 @@ form_mode: { cmp #$ff bne b5 jsr form_control - tya + txa cmp #0 beq b8 rts @@ -1188,10 +1178,10 @@ form_render_values: { lda #0 sta idx b1: - jsr form_field_ptr ldy idx - lda form_fields_val,y - tay + jsr form_field_ptr + ldx idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y @@ -1203,19 +1193,15 @@ form_render_values: { } // Get the screen address of a form field // field_idx is the index of the field to get the screen address for -// form_field_ptr(byte zeropage(2) field_idx) +// form_field_ptr(byte register(Y) field_idx) form_field_ptr: { .label return = 3 - .label field_idx = 2 .label _2 = 3 - ldy field_idx - lda form_fields_y,y - tay - lda form_line_hi,y + ldx form_fields_y,y + lda form_line_hi,x sta _2+1 - lda form_line_lo,y + lda form_line_lo,x sta _2 - ldy field_idx lda form_fields_x,y clc adc return @@ -1332,7 +1318,7 @@ apply_preset: { // Returns 0 if space is not pressed, non-0 if space is pressed form_control: { .label field = 3 - stx form_field_ptr.field_idx + ldy form_field_idx jsr form_field_ptr dec form_cursor_count lda form_cursor_count @@ -1364,64 +1350,70 @@ form_control: { and (field),y // Unblink the cursor sta (field),y - lda #KEY_MODIFIER_SHIFT - and keyboard_modifiers + txa + and #KEY_MODIFIER_SHIFT cmp #0 beq b5 - dex - cpx #$ff + dec form_field_idx + lda form_field_idx + cmp #$ff bne b7 - ldx #form_fields_cnt-1 + lda #form_fields_cnt-1 + sta form_field_idx b7: lda #FORM_CURSOR_BLINK/2 sta form_cursor_count - ldy #0 + ldx #0 breturn: rts b5: - inx - cpx #form_fields_cnt + inc form_field_idx + lda form_field_idx + cmp #form_fields_cnt bne b7 - ldx #0 + lda #0 + sta form_field_idx jmp b7 b4: cmp #KEY_CRSR_RIGHT bne b9 - lda #KEY_MODIFIER_SHIFT - and keyboard_modifiers + txa + and #KEY_MODIFIER_SHIFT cmp #0 beq b10 + ldx form_field_idx dec form_fields_val,x - lda form_fields_val,x + ldy form_field_idx + lda form_fields_val,y cmp #$ff bne b12 - lda form_fields_max,x - sta form_fields_val,x + lda form_fields_max,y + sta form_fields_val,y b12: // Render field value - lda form_fields_val,x - tay + ldx form_field_idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y b6: - ldy #0 + ldx #0 jmp breturn b10: + ldx form_field_idx inc form_fields_val,x - txa - tay - lda form_fields_val,x + ldy form_field_idx + lda form_fields_val,y cmp form_fields_max,y bcc b12 beq b12 lda #0 - sta form_fields_val,x + sta form_fields_val,y jmp b12 b9: cmp #KEY_SPACE bne b6 - ldy #$ff + ldx #$ff jmp breturn b2: lda #$80 @@ -1434,16 +1426,16 @@ form_control: { // screen is the start address of the screen to use form_set_screen: { .label line = 3 - ldy #0 + ldx #0 lda #FORM_SCREEN sta line+1 b1: lda line - sta form_line_lo,y + sta form_line_lo,x lda line+1 - sta form_line_hi,y + sta form_line_hi,x lda #$28 clc adc line @@ -1451,8 +1443,8 @@ form_set_screen: { bcc !+ inc line+1 !: - iny - cpy #$19 + inx + cpx #$19 bne b1 rts } @@ -1588,7 +1580,7 @@ gfx_init_plane_full: { rts } // Initialize 320*200 1bpp pixel ($2000) plane with identical bytes -// gfx_init_plane_fill(dword zeropage($a) plane_addr, byte zeropage(2) fill) +// gfx_init_plane_fill(dword zeropage(9) plane_addr, byte zeropage(2) fill) gfx_init_plane_fill: { .label _0 = $13 .label _1 = 3 @@ -1597,7 +1589,7 @@ gfx_init_plane_fill: { .label _6 = 3 .label gfxb = 3 .label by = 7 - .label plane_addr = $a + .label plane_addr = 9 .label fill = 2 lda plane_addr sta _0 @@ -1834,7 +1826,7 @@ gfx_init_plane_charset8: { .label bits = 8 .label chargen = 3 .label gfxa = 5 - .label col = 9 + .label col = $d .label cr = 7 .label ch = 2 lda #gfxbCpuBank @@ -1992,10 +1984,10 @@ gfx_init_vic_bitmap: { lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } // Draw a line on the bitmap -// bitmap_line(byte zeropage(9) x0, byte register(X) x1, byte zeropage($f) y0, byte zeropage($12) y1) +// bitmap_line(byte zeropage($d) x0, byte register(X) x1, byte zeropage($f) y0, byte zeropage($12) y1) bitmap_line: { .label xd = 8 - .label x0 = 9 + .label x0 = $d .label y0 = $f .label y1 = $12 txa @@ -2099,11 +2091,11 @@ bitmap_line: { jsr bitmap_line_xdyi jmp breturn } -// bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) +// bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyi: { .label x = $e .label y = $f - .label x1 = 9 + .label x1 = $d .label xd = 8 .label yd = 7 .label e = $12 @@ -2166,7 +2158,7 @@ bitmap_line_ydxi: { .label y1 = $12 .label yd = 7 .label xd = 8 - .label e = 9 + .label e = $d lda xd lsr sta e @@ -2194,11 +2186,11 @@ bitmap_line_ydxi: { bne b1 rts } -// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) +// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyd: { .label x = $e .label y = $f - .label x1 = 9 + .label x1 = $d .label xd = 8 .label yd = 7 .label e = $12 @@ -2235,7 +2227,7 @@ bitmap_line_ydxd: { .label y1 = $f .label yd = 7 .label xd = 8 - .label e = 9 + .label e = $d lda xd lsr sta e diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log index 4d6fae768..564da7ba5 100644 --- a/src/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/ref/c64dtv-gfxexplorer.log @@ -16230,9 +16230,8 @@ form_render_values: { lda form_field_ptr.return_2+1 sta field+1 //SEG661 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 - ldy idx - lda form_fields_val,y - tay + ldx idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y @@ -16716,9 +16715,8 @@ form_control: { b12: //SEG798 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 // Render field value - ldy form_field_idx - lda form_fields_val,y - tay + ldx form_field_idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y @@ -20552,373 +20550,368 @@ Uplift Scope [gfx_init_plane_vertical2] Uplift Scope [gfx_init_plane_blank] Uplift Scope [gfx_init_plane_full] -Uplifting [keyboard_event_scan] best 15533608 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] zp ZP_BYTE:256 [ keyboard_event_scan::event_type#0 ] zp ZP_BYTE:257 [ keyboard_event_scan::$11 ] zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:247 [ keyboard_event_scan::$14 ] zp ZP_BYTE:249 [ keyboard_event_scan::$18 ] zp ZP_BYTE:251 [ keyboard_event_scan::$22 ] zp ZP_BYTE:253 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 15531606 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] zp ZP_BYTE:256 [ keyboard_event_scan::event_type#0 ] zp ZP_BYTE:257 [ keyboard_event_scan::$11 ] zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:247 [ keyboard_event_scan::$14 ] zp ZP_BYTE:249 [ keyboard_event_scan::$18 ] zp ZP_BYTE:251 [ keyboard_event_scan::$22 ] zp ZP_BYTE:253 [ keyboard_event_scan::$26 ] Limited combination testing to 10 combinations of 5308416 possible. -Uplifting [] best 15533540 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_WORD:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 ] zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] reg byte x [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] +Uplifting [] best 15531592 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_WORD:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 ] zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] zp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] Limited combination testing to 10 combinations of 16 possible. -Uplifting [keyboard_matrix_read] best 15443539 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::rowid#0 ] zp ZP_BYTE:262 [ keyboard_matrix_read::return#0 ] +Uplifting [keyboard_matrix_read] best 15441589 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] zp ZP_BYTE:262 [ keyboard_matrix_read::return#0 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [gfx_init_plane_charset8] best 15428539 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$5 ] zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp ZP_WORD:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp ZP_WORD:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplifting [gfx_init_plane_charset8] best 15426589 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$5 ] zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp ZP_WORD:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp ZP_WORD:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Limited combination testing to 10 combinations of 512 possible. -Uplifting [print_str_at] best 15428539 combination zp ZP_WORD:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] zp ZP_WORD:39 [ print_str_at::at#2 print_str_at::at#0 ] -Uplifting [form_field_ptr] best 15428535 combination zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp ZP_WORD:266 [ form_field_ptr::return#2 ] zp ZP_WORD:274 [ form_field_ptr::return#0 ] reg byte a [ form_field_ptr::y#0 ] zp ZP_BYTE:273 [ form_field_ptr::x#0 ] zp ZP_WORD:276 [ form_field_ptr::return#3 ] zp ZP_WORD:271 [ form_field_ptr::$2 ] +Uplifting [print_str_at] best 15426589 combination zp ZP_WORD:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] zp ZP_WORD:39 [ print_str_at::at#2 print_str_at::at#0 ] +Uplifting [form_field_ptr] best 15423574 combination reg byte y [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp ZP_WORD:266 [ form_field_ptr::return#2 ] zp ZP_WORD:274 [ form_field_ptr::return#0 ] reg byte x [ form_field_ptr::y#0 ] zp ZP_BYTE:273 [ form_field_ptr::x#0 ] zp ZP_WORD:276 [ form_field_ptr::return#3 ] zp ZP_WORD:271 [ form_field_ptr::$2 ] Limited combination testing to 10 combinations of 48 possible. -Uplifting [form_render_values] best 15428535 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] zp ZP_WORD:268 [ form_render_values::field#0 ] -Uplifting [apply_preset] best 15416202 combination reg byte y [ apply_preset::i#2 apply_preset::i#1 ] zp ZP_WORD:43 [ apply_preset::preset#14 ] reg byte a [ apply_preset::idx#0 ] +Uplifting [form_render_values] best 15423574 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] zp ZP_WORD:268 [ form_render_values::field#0 ] +Uplifting [apply_preset] best 15411241 combination reg byte y [ apply_preset::i#2 apply_preset::i#1 ] zp ZP_WORD:43 [ apply_preset::preset#14 ] reg byte a [ apply_preset::idx#0 ] Limited combination testing to 10 combinations of 12 possible. -Uplifting [print_str_lines] best 15404202 combination zp ZP_WORD:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] -Uplifting [form_mode] best 15397002 combination reg byte a [ form_mode::$36 ] reg byte y [ form_mode::i#2 form_mode::i#1 ] zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] +Uplifting [print_str_lines] best 15399241 combination zp ZP_WORD:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] +Uplifting [form_mode] best 15392041 combination reg byte a [ form_mode::$36 ] reg byte x [ form_mode::i#2 form_mode::i#1 ] zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] Limited combination testing to 10 combinations of 24 possible. -Uplifting [form_control] best 15391002 combination reg byte a [ form_control::return#0 ] zp ZP_BYTE:46 [ form_control::return#2 ] zp ZP_BYTE:280 [ form_control::$5 ] zp ZP_BYTE:283 [ form_control::$11 ] zp ZP_BYTE:284 [ form_control::$12 ] zp ZP_BYTE:285 [ form_control::$22 ] zp ZP_BYTE:286 [ form_control::$6 ] zp ZP_BYTE:282 [ form_control::key_event#0 ] zp ZP_WORD:278 [ form_control::field#0 ] +Uplifting [form_control] best 15385032 combination reg byte a [ form_control::return#0 ] reg byte x [ form_control::return#2 ] zp ZP_BYTE:280 [ form_control::$5 ] zp ZP_BYTE:283 [ form_control::$11 ] zp ZP_BYTE:284 [ form_control::$12 ] zp ZP_BYTE:285 [ form_control::$22 ] zp ZP_BYTE:286 [ form_control::$6 ] zp ZP_BYTE:282 [ form_control::key_event#0 ] zp ZP_WORD:278 [ form_control::field#0 ] Limited combination testing to 10 combinations of 65536 possible. -Uplifting [bitmap_plot] best 15388593 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] zp ZP_BYTE:330 [ bitmap_plot::$1 ] zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 ] zp ZP_WORD:328 [ bitmap_plot::$0 ] +Uplifting [bitmap_plot] best 15382623 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] zp ZP_BYTE:330 [ bitmap_plot::$1 ] zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 ] zp ZP_WORD:328 [ bitmap_plot::$0 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [gfx_init_plane_8bppchunky] best 15387363 combination reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] zp ZP_WORD:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] zp ZP_WORD:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Uplifting [gfx_init_plane_8bppchunky] best 15381393 combination reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] zp ZP_WORD:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] zp ZP_WORD:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Limited combination testing to 10 combinations of 16 possible. -Uplifting [gfx_init_screen2] best 15386163 combination reg byte a [ gfx_init_screen2::$0 ] reg byte a [ gfx_init_screen2::$3 ] zp ZP_BYTE:350 [ gfx_init_screen2::$4 ] zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] zp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] zp ZP_WORD:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Uplifting [gfx_init_screen2] best 15380193 combination reg byte a [ gfx_init_screen2::$0 ] reg byte a [ gfx_init_screen2::$3 ] zp ZP_BYTE:350 [ gfx_init_screen2::$4 ] zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] zp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] zp ZP_WORD:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Limited combination testing to 10 combinations of 2304 possible. -Uplifting [bitmap_line_xdyi] best 15385563 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] +Uplifting [bitmap_line_xdyi] best 15379593 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_xdyd] best 15384963 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte x [ bitmap_line_xdyd::$6 ] zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] +Uplifting [bitmap_line_xdyd] best 15378993 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte x [ bitmap_line_xdyd::$6 ] zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxi] best 15383957 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte a [ bitmap_line_ydxi::$6 ] zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] +Uplifting [bitmap_line_ydxi] best 15377987 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte a [ bitmap_line_ydxi::$6 ] zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxd] best 15382951 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ bitmap_line_ydxd::$6 ] zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplifting [bitmap_line_ydxd] best 15376981 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ bitmap_line_ydxd::$6 ] zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [gfx_init_screen0] best 15381751 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] zp ZP_BYTE:356 [ gfx_init_screen0::$3 ] zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp ZP_WORD:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplifting [gfx_init_screen0] best 15375781 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] zp ZP_BYTE:356 [ gfx_init_screen0::$3 ] zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp ZP_WORD:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Limited combination testing to 10 combinations of 768 possible. -Uplifting [gfx_init_screen3] best 15380551 combination reg byte a [ gfx_init_screen3::$0 ] reg byte a [ gfx_init_screen3::$2 ] zp ZP_BYTE:345 [ gfx_init_screen3::$3 ] zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] zp ZP_WORD:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Uplifting [gfx_init_screen3] best 15374581 combination reg byte a [ gfx_init_screen3::$0 ] reg byte a [ gfx_init_screen3::$2 ] zp ZP_BYTE:345 [ gfx_init_screen3::$3 ] zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] zp ZP_WORD:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Limited combination testing to 10 combinations of 768 possible. -Uplifting [gfx_init_plane_horisontal] best 15379051 combination zp ZP_WORD:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] reg byte a [ gfx_init_plane_horisontal::$5 ] reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Uplifting [gfx_init_plane_horisontal] best 15373081 combination zp ZP_WORD:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] reg byte a [ gfx_init_plane_horisontal::$5 ] reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Limited combination testing to 10 combinations of 16 possible. -Uplifting [gfx_init_screen1] best 15377451 combination reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte a [ gfx_init_screen1::$0 ] zp ZP_BYTE:352 [ gfx_init_screen1::$1 ] zp ZP_WORD:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Uplifting [gfx_init_screen1] best 15371481 combination reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte a [ gfx_init_screen1::$0 ] zp ZP_BYTE:352 [ gfx_init_screen1::$1 ] zp ZP_WORD:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [form_set_screen] best 15375351 combination reg byte y [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] zp ZP_BYTE:288 [ form_set_screen::$1 ] zp ZP_WORD:47 [ form_set_screen::line#2 form_set_screen::line#1 ] +Uplifting [form_set_screen] best 15369381 combination reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] zp ZP_BYTE:288 [ form_set_screen::$1 ] zp ZP_WORD:47 [ form_set_screen::line#2 form_set_screen::line#1 ] Limited combination testing to 10 combinations of 48 possible. -Uplifting [gfx_init_plane_horisontal2] best 15374351 combination reg byte a [ gfx_init_plane_horisontal2::$5 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] zp ZP_WORD:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Uplifting [gfx_init_plane_horisontal2] best 15368381 combination reg byte a [ gfx_init_plane_horisontal2::$5 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] zp ZP_WORD:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [gfx_init_charset] best 15373451 combination zp ZP_WORD:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp ZP_WORD:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplifting [gfx_init_plane_fill] best 15372548 combination zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] reg byte x [ gfx_init_plane_fill::gfxbCpuBank#1 ] zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] zp ZP_WORD:300 [ gfx_init_plane_fill::$4 ] zp ZP_WORD:302 [ gfx_init_plane_fill::$5 ] zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] zp ZP_DWORD:58 [ gfx_init_plane_fill::plane_addr#3 ] +Uplifting [gfx_init_charset] best 15367481 combination zp ZP_WORD:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp ZP_WORD:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Uplifting [gfx_init_plane_fill] best 15366578 combination zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] reg byte x [ gfx_init_plane_fill::gfxbCpuBank#1 ] zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] zp ZP_WORD:300 [ gfx_init_plane_fill::$4 ] zp ZP_WORD:302 [ gfx_init_plane_fill::$5 ] zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] zp ZP_DWORD:58 [ gfx_init_plane_fill::plane_addr#3 ] Limited combination testing to 10 combinations of 96 possible. -Uplifting [bitmap_clear] best 15371648 combination zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:334 [ bitmap_clear::$3 ] -Uplifting [gfx_init_screen4] best 15370748 combination zp ZP_WORD:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Uplifting [gfx_init_plane_vertical] best 15369848 combination zp ZP_WORD:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] reg byte x [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Uplifting [print_cls] best 15369848 combination zp ZP_WORD:56 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] zp ZP_WORD:290 [ print_cls::$0 ] -Uplifting [dtvSetCpuBankSegment1] best 15369709 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] -Uplifting [keyboard_event_get] best 15368800 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] zp ZP_BYTE:281 [ keyboard_event_get::return#4 ] +Uplifting [bitmap_clear] best 15365678 combination zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:334 [ bitmap_clear::$3 ] +Uplifting [gfx_init_screen4] best 15364778 combination zp ZP_WORD:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Uplifting [gfx_init_plane_vertical] best 15363878 combination zp ZP_WORD:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] reg byte x [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Uplifting [print_cls] best 15363878 combination zp ZP_WORD:56 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] zp ZP_WORD:290 [ print_cls::$0 ] +Uplifting [dtvSetCpuBankSegment1] best 15363739 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] +Uplifting [keyboard_event_get] best 15362830 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] zp ZP_BYTE:281 [ keyboard_event_get::return#4 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [bitmap_init] best 15368520 combination zp ZP_WORD:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp ZP_BYTE:336 [ bitmap_init::$0 ] zp ZP_BYTE:338 [ bitmap_init::$7 ] zp ZP_BYTE:339 [ bitmap_init::$8 ] zp ZP_BYTE:340 [ bitmap_init::$9 ] zp ZP_BYTE:341 [ bitmap_init::$10 ] zp ZP_BYTE:337 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 15362550 combination zp ZP_WORD:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp ZP_BYTE:336 [ bitmap_init::$0 ] zp ZP_BYTE:338 [ bitmap_init::$7 ] zp ZP_BYTE:339 [ bitmap_init::$8 ] zp ZP_BYTE:340 [ bitmap_init::$9 ] zp ZP_BYTE:341 [ bitmap_init::$10 ] zp ZP_BYTE:337 [ bitmap_init::$6 ] Limited combination testing to 10 combinations of 138240 possible. -Uplifting [render_preset_name] best 15368184 combination reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] zp ZP_WORD:35 [ render_preset_name::name#13 ] -Uplifting [keyboard_event_pressed] best 15368172 combination reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:250 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:252 [ keyboard_event_pressed::return#3 ] zp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] zp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] +Uplifting [render_preset_name] best 15362214 combination reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] zp ZP_WORD:35 [ render_preset_name::name#13 ] +Uplifting [keyboard_event_pressed] best 15362202 combination reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:250 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:252 [ keyboard_event_pressed::return#3 ] zp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] zp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] Limited combination testing to 10 combinations of 147456 possible. -Uplifting [gfx_init_vic_bitmap] best 15368172 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Uplifting [get_vic_screen] best 15368151 combination reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] zp ZP_WORD:212 [ get_vic_screen::return#10 ] zp ZP_WORD:231 [ get_vic_screen::return#11 ] zp ZP_WORD:21 [ get_vic_screen::return#5 ] -Uplifting [get_plane] best 15368103 combination reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] zp ZP_DWORD:160 [ get_plane::return#16 ] zp ZP_DWORD:187 [ get_plane::return#17 ] zp ZP_DWORD:26 [ get_plane::return#14 ] -Uplifting [bitmap_line] best 15368057 combination zp ZP_BYTE:316 [ bitmap_line::y1#0 ] zp ZP_BYTE:315 [ bitmap_line::y0#0 ] reg byte x [ bitmap_line::x1#0 ] zp ZP_BYTE:313 [ bitmap_line::x0#0 ] zp ZP_BYTE:318 [ bitmap_line::yd#2 ] zp ZP_BYTE:319 [ bitmap_line::yd#1 ] zp ZP_BYTE:321 [ bitmap_line::yd#10 ] zp ZP_BYTE:322 [ bitmap_line::yd#11 ] zp ZP_BYTE:317 [ bitmap_line::xd#2 ] zp ZP_BYTE:320 [ bitmap_line::xd#1 ] +Uplifting [gfx_init_vic_bitmap] best 15362202 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Uplifting [get_vic_screen] best 15362181 combination reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] zp ZP_WORD:212 [ get_vic_screen::return#10 ] zp ZP_WORD:231 [ get_vic_screen::return#11 ] zp ZP_WORD:21 [ get_vic_screen::return#5 ] +Uplifting [get_plane] best 15362133 combination reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] zp ZP_DWORD:160 [ get_plane::return#16 ] zp ZP_DWORD:187 [ get_plane::return#17 ] zp ZP_DWORD:26 [ get_plane::return#14 ] +Uplifting [bitmap_line] best 15362087 combination zp ZP_BYTE:316 [ bitmap_line::y1#0 ] zp ZP_BYTE:315 [ bitmap_line::y0#0 ] reg byte x [ bitmap_line::x1#0 ] zp ZP_BYTE:313 [ bitmap_line::x0#0 ] zp ZP_BYTE:318 [ bitmap_line::yd#2 ] zp ZP_BYTE:319 [ bitmap_line::yd#1 ] zp ZP_BYTE:321 [ bitmap_line::yd#10 ] zp ZP_BYTE:322 [ bitmap_line::yd#11 ] zp ZP_BYTE:317 [ bitmap_line::xd#2 ] zp ZP_BYTE:320 [ bitmap_line::xd#1 ] Limited combination testing to 10 combinations of 186624 possible. -Uplifting [get_vic_charset] best 15368048 combination zp ZP_WORD:222 [ get_vic_charset::return#4 ] reg byte a [ get_vic_charset::idx#0 ] zp ZP_WORD:23 [ get_vic_charset::return#2 ] -Uplifting [print_ln] best 15368048 combination -Uplifting [print_set_screen] best 15368048 combination -Uplifting [keyboard_init] best 15368048 combination -Uplifting [main] best 15368048 combination -Uplifting [gfx_init] best 15368048 combination -Uplifting [gfx_init_plane_vertical2] best 15368048 combination -Uplifting [gfx_init_plane_blank] best 15368048 combination -Uplifting [gfx_init_plane_full] best 15368048 combination +Uplifting [get_vic_charset] best 15362078 combination zp ZP_WORD:222 [ get_vic_charset::return#4 ] reg byte a [ get_vic_charset::idx#0 ] zp ZP_WORD:23 [ get_vic_charset::return#2 ] +Uplifting [print_ln] best 15362078 combination +Uplifting [print_set_screen] best 15362078 combination +Uplifting [keyboard_init] best 15362078 combination +Uplifting [main] best 15362078 combination +Uplifting [gfx_init] best 15362078 combination +Uplifting [gfx_init_plane_vertical2] best 15362078 combination +Uplifting [gfx_init_plane_blank] best 15362078 combination +Uplifting [gfx_init_plane_full] best 15362078 combination Attempting to uplift remaining variables inzp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] -Uplifting [] best 15368048 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [] best 15362078 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:256 [ keyboard_event_scan::event_type#0 ] -Uplifting [keyboard_event_scan] best 14768048 combination reg byte a [ keyboard_event_scan::event_type#0 ] +Uplifting [keyboard_event_scan] best 14762078 combination reg byte a [ keyboard_event_scan::event_type#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:257 [ keyboard_event_scan::$11 ] -Uplifting [keyboard_event_scan] best 14168048 combination reg byte a [ keyboard_event_scan::$11 ] +Uplifting [keyboard_event_scan] best 14162078 combination reg byte a [ keyboard_event_scan::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 14168048 combination zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 12662078 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Uplifting [keyboard_event_scan] best 14168048 combination zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Uplifting [keyboard_event_scan] best 12662078 combination zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 14168048 combination zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 12662078 combination zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 14168048 combination zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 12662078 combination zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:262 [ keyboard_matrix_read::return#0 ] -Uplifting [keyboard_matrix_read] best 14138045 combination reg byte a [ keyboard_matrix_read::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] -Uplifting [form_field_ptr] best 14138045 combination zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] +Uplifting [keyboard_matrix_read] best 12632075 combination reg byte a [ keyboard_matrix_read::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] -Uplifting [form_render_values] best 14138045 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] +Uplifting [form_render_values] best 12632075 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] -Uplifting [gfx_mode] best 14138045 combination zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] +Uplifting [gfx_mode] best 12623075 combination reg byte x [ gfx_mode::cx#2 gfx_mode::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Uplifting [gfx_init_plane_charset8] best 14129045 combination reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] +Uplifting [gfx_init_plane_charset8] best 12614075 combination reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] -Uplifting [gfx_init_plane_charset8] best 14129045 combination zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] +Uplifting [gfx_init_plane_charset8] best 12614075 combination zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] -Uplifting [gfx_init_plane_charset8] best 14129045 combination zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] +Uplifting [gfx_init_plane_charset8] best 12614075 combination zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] -Uplifting [bitmap_line_xdyi] best 14129045 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +Uplifting [bitmap_line_xdyi] best 12614075 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] -Uplifting [bitmap_line_ydxi] best 14129045 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] +Uplifting [bitmap_line_ydxi] best 12614075 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] -Uplifting [bitmap_line_xdyd] best 14129045 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] +Uplifting [bitmap_line_xdyd] best 12614075 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Uplifting [bitmap_line_ydxd] best 14129045 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +Uplifting [bitmap_line_ydxd] best 12614075 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ gfx_mode::j#2 gfx_mode::j#1 ] -Uplifting [gfx_mode] best 14127845 combination reg byte y [ gfx_mode::j#2 gfx_mode::j#1 ] +Uplifting [gfx_mode] best 12612875 combination reg byte x [ gfx_mode::j#2 gfx_mode::j#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ gfx_mode::i#2 gfx_mode::i#1 ] -Uplifting [gfx_mode] best 14126645 combination reg byte y [ gfx_mode::i#2 gfx_mode::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:46 [ form_control::return#2 ] -Uplifting [form_control] best 14125636 combination reg byte y [ form_control::return#2 ] +Uplifting [gfx_mode] best 12611675 combination reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] -Uplifting [bitmap_line_xdyi] best 14125636 combination zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] +Uplifting [bitmap_line_xdyi] best 12611675 combination zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] -Uplifting [bitmap_line_xdyd] best 14125636 combination zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] +Uplifting [bitmap_line_xdyd] best 12611675 combination zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] -Uplifting [] best 14125636 combination zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] +Uplifting [] best 12611675 combination zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] -Uplifting [form_mode] best 14125636 combination zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] +Uplifting [form_mode] best 12611675 combination zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:242 [ gfx_mode::keyboard_event#0 ] -Uplifting [gfx_mode] best 14125036 combination reg byte a [ gfx_mode::keyboard_event#0 ] +Uplifting [gfx_mode] best 12611075 combination reg byte a [ gfx_mode::keyboard_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:288 [ form_set_screen::$1 ] -Uplifting [form_set_screen] best 14124436 combination reg byte a [ form_set_screen::$1 ] +Uplifting [form_set_screen] best 12610475 combination reg byte a [ form_set_screen::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:345 [ gfx_init_screen3::$3 ] -Uplifting [gfx_init_screen3] best 14123836 combination reg byte a [ gfx_init_screen3::$3 ] +Uplifting [gfx_init_screen3] best 12609875 combination reg byte a [ gfx_init_screen3::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:350 [ gfx_init_screen2::$4 ] -Uplifting [gfx_init_screen2] best 14123236 combination reg byte a [ gfx_init_screen2::$4 ] +Uplifting [gfx_init_screen2] best 12609275 combination reg byte a [ gfx_init_screen2::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:352 [ gfx_init_screen1::$1 ] -Uplifting [gfx_init_screen1] best 14122636 combination reg byte a [ gfx_init_screen1::$1 ] +Uplifting [gfx_init_screen1] best 12608675 combination reg byte a [ gfx_init_screen1::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:356 [ gfx_init_screen0::$3 ] -Uplifting [gfx_init_screen0] best 14122036 combination reg byte a [ gfx_init_screen0::$3 ] +Uplifting [gfx_init_screen0] best 12608075 combination reg byte a [ gfx_init_screen0::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Uplifting [gfx_init_screen3] best 14121036 combination reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] +Uplifting [gfx_init_screen3] best 12607075 combination reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Uplifting [gfx_init_screen0] best 14120036 combination reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] +Uplifting [gfx_init_screen0] best 12606075 combination reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Uplifting [gfx_init_plane_horisontal2] best 14119136 combination reg byte x [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] +Uplifting [gfx_init_plane_horisontal2] best 12605175 combination reg byte x [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Uplifting [gfx_init_screen2] best 14118136 combination reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] +Uplifting [gfx_init_screen2] best 12604175 combination reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] -Uplifting [gfx_mode] best 14118136 combination zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] +Uplifting [gfx_mode] best 12604175 combination zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Uplifting [gfx_init_plane_charset8] best 14118136 combination zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] +Uplifting [gfx_init_plane_charset8] best 12604175 combination zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] -Uplifting [gfx_init_screen2] best 14118036 combination reg byte y [ gfx_init_screen2::col#0 ] +Uplifting [gfx_init_screen2] best 12604075 combination reg byte y [ gfx_init_screen2::col#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] -Uplifting [bitmap_line_xdyi] best 14118036 combination zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] +Uplifting [bitmap_line_xdyi] best 12604075 combination zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] -Uplifting [bitmap_line_ydxi] best 14118036 combination zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] +Uplifting [bitmap_line_ydxi] best 12604075 combination zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] -Uplifting [bitmap_line_xdyd] best 14118036 combination zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] +Uplifting [bitmap_line_xdyd] best 12604075 combination zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Uplifting [bitmap_line_ydxd] best 14118036 combination zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] +Uplifting [bitmap_line_ydxd] best 12604075 combination zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] +Uplifting [] best 12604075 combination zp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] Attempting to uplift remaining variables inzp ZP_BYTE:343 [ gfx_init_screen3::$1 ] -Uplifting [gfx_init_screen3] best 14118036 combination zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] +Uplifting [gfx_init_screen3] best 12604075 combination zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] -Uplifting [gfx_init_screen2] best 14118036 combination zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] +Uplifting [gfx_init_screen2] best 12604075 combination zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:354 [ gfx_init_screen0::$1 ] -Uplifting [gfx_init_screen0] best 14118036 combination zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] +Uplifting [gfx_init_screen0] best 12604075 combination zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] -Uplifting [gfx_mode] best 14118017 combination reg byte y [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] +Uplifting [gfx_mode] best 12604056 combination reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] -Uplifting [gfx_init_plane_horisontal2] best 14118017 combination zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Uplifting [gfx_init_plane_horisontal2] best 12604056 combination zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] -Uplifting [gfx_init_screen1] best 14118017 combination zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Uplifting [gfx_init_screen1] best 12604056 combination zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] -Uplifting [gfx_init_screen3] best 14118017 combination zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Uplifting [gfx_init_screen3] best 12604056 combination zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Uplifting [gfx_init_screen0] best 14118017 combination zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplifting [gfx_init_screen0] best 12604056 combination zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] -Uplifting [gfx_init_plane_horisontal] best 14118017 combination zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Uplifting [gfx_init_plane_horisontal] best 12604056 combination zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] -Uplifting [gfx_init_screen2] best 14118017 combination zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Uplifting [gfx_init_screen2] best 12604056 combination zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Uplifting [gfx_init_vic_bitmap] best 14118017 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Uplifting [gfx_init_vic_bitmap] best 12604056 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] -Uplifting [gfx_init_plane_8bppchunky] best 14118017 combination zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Uplifting [gfx_init_plane_8bppchunky] best 12604056 combination zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] -Uplifting [bitmap_init] best 14117847 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +Uplifting [bitmap_init] best 12603886 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:336 [ bitmap_init::$0 ] -Uplifting [bitmap_init] best 14117787 combination reg byte a [ bitmap_init::$0 ] +Uplifting [bitmap_init] best 12603826 combination reg byte a [ bitmap_init::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:338 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 14117727 combination reg byte a [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 12603766 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:339 [ bitmap_init::$8 ] -Uplifting [bitmap_init] best 14117667 combination reg byte a [ bitmap_init::$8 ] +Uplifting [bitmap_init] best 12603706 combination reg byte a [ bitmap_init::$8 ] Attempting to uplift remaining variables inzp ZP_BYTE:340 [ bitmap_init::$9 ] -Uplifting [bitmap_init] best 14117607 combination reg byte a [ bitmap_init::$9 ] +Uplifting [bitmap_init] best 12603646 combination reg byte a [ bitmap_init::$9 ] Attempting to uplift remaining variables inzp ZP_BYTE:341 [ bitmap_init::$10 ] -Uplifting [bitmap_init] best 14117547 combination reg byte a [ bitmap_init::$10 ] +Uplifting [bitmap_init] best 12603586 combination reg byte a [ bitmap_init::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] -Uplifting [gfx_init_plane_fill] best 14117547 combination zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] +Uplifting [gfx_init_plane_fill] best 12603586 combination zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Uplifting [gfx_init_plane_vertical] best 14117547 combination zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Uplifting [gfx_init_plane_vertical] best 12603586 combination zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 14117547 combination zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 12603586 combination zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Uplifting [gfx_init_screen4] best 14117547 combination zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Uplifting [gfx_init_screen4] best 12603586 combination zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplifting [gfx_init_charset] best 14117547 combination zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Uplifting [gfx_init_charset] best 12603586 combination zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] -Uplifting [bitmap_line_xdyi] best 14117547 combination zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] +Uplifting [bitmap_line_xdyi] best 12603586 combination zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] -Uplifting [bitmap_line_ydxi] best 14117547 combination zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] +Uplifting [bitmap_line_ydxi] best 12603586 combination zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] -Uplifting [bitmap_line_xdyd] best 14117547 combination zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] +Uplifting [bitmap_line_xdyd] best 12603586 combination zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] -Uplifting [bitmap_line_ydxd] best 14117547 combination zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] +Uplifting [bitmap_line_ydxd] best 12603586 combination zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Uplifting [gfx_init_plane_charset8] best 14117547 combination zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] -Uplifting [] best 14117547 combination zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] +Uplifting [gfx_init_plane_charset8] best 12603586 combination zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] -Uplifting [bitmap_line_xdyi] best 14117547 combination zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] +Uplifting [bitmap_line_xdyi] best 12603586 combination zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] -Uplifting [bitmap_line_ydxi] best 14117547 combination zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] +Uplifting [bitmap_line_ydxi] best 12603586 combination zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] -Uplifting [bitmap_line_xdyd] best 14117547 combination zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] +Uplifting [bitmap_line_xdyd] best 12603586 combination zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] -Uplifting [bitmap_line_ydxd] best 14117547 combination zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] +Uplifting [bitmap_line_ydxd] best 12603586 combination zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] -Uplifting [gfx_mode] best 14117536 combination reg byte y [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] +Uplifting [gfx_mode] best 12603575 combination reg byte x [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:337 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 14117536 combination zp ZP_BYTE:337 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 12603575 combination zp ZP_BYTE:337 [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] -Uplifting [bitmap_line_xdyi] best 14117536 combination zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] +Uplifting [bitmap_line_xdyi] best 12603575 combination zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] -Uplifting [bitmap_line_ydxi] best 14117536 combination zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] +Uplifting [bitmap_line_ydxi] best 12603575 combination zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] -Uplifting [bitmap_line_xdyd] best 14117536 combination zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] +Uplifting [bitmap_line_xdyd] best 12603575 combination zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplifting [bitmap_line_ydxd] best 14117536 combination zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplifting [bitmap_line_ydxd] best 12603575 combination zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] -Uplifting [gfx_init_plane_fill] best 14117536 combination zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] +Uplifting [gfx_init_plane_fill] best 12603575 combination zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:158 [ gfx_mode::$29 ] -Uplifting [gfx_mode] best 14117530 combination reg byte a [ gfx_mode::$29 ] +Uplifting [gfx_mode] best 12603569 combination reg byte a [ gfx_mode::$29 ] Attempting to uplift remaining variables inzp ZP_BYTE:174 [ gfx_mode::$34 ] -Uplifting [gfx_mode] best 14117524 combination reg byte a [ gfx_mode::$34 ] +Uplifting [gfx_mode] best 12603563 combination reg byte a [ gfx_mode::$34 ] Attempting to uplift remaining variables inzp ZP_BYTE:177 [ gfx_mode::$36 ] -Uplifting [gfx_mode] best 14117518 combination reg byte a [ gfx_mode::$36 ] +Uplifting [gfx_mode] best 12603557 combination reg byte a [ gfx_mode::$36 ] Attempting to uplift remaining variables inzp ZP_BYTE:180 [ gfx_mode::$38 ] -Uplifting [gfx_mode] best 14117512 combination reg byte a [ gfx_mode::$38 ] +Uplifting [gfx_mode] best 12603551 combination reg byte a [ gfx_mode::$38 ] Attempting to uplift remaining variables inzp ZP_BYTE:181 [ gfx_mode::$39 ] -Uplifting [gfx_mode] best 14117506 combination reg byte a [ gfx_mode::$39 ] +Uplifting [gfx_mode] best 12603545 combination reg byte a [ gfx_mode::$39 ] Attempting to uplift remaining variables inzp ZP_BYTE:182 [ gfx_mode::$40 ] -Uplifting [gfx_mode] best 14117500 combination reg byte a [ gfx_mode::$40 ] +Uplifting [gfx_mode] best 12603539 combination reg byte a [ gfx_mode::$40 ] Attempting to uplift remaining variables inzp ZP_BYTE:183 [ gfx_mode::$41 ] -Uplifting [gfx_mode] best 14117494 combination reg byte a [ gfx_mode::$41 ] +Uplifting [gfx_mode] best 12603533 combination reg byte a [ gfx_mode::$41 ] Attempting to uplift remaining variables inzp ZP_BYTE:184 [ gfx_mode::$42 ] -Uplifting [gfx_mode] best 14117488 combination reg byte a [ gfx_mode::$42 ] +Uplifting [gfx_mode] best 12603527 combination reg byte a [ gfx_mode::$42 ] Attempting to uplift remaining variables inzp ZP_BYTE:185 [ gfx_mode::$43 ] -Uplifting [gfx_mode] best 14117482 combination reg byte a [ gfx_mode::$43 ] +Uplifting [gfx_mode] best 12603521 combination reg byte a [ gfx_mode::$43 ] Attempting to uplift remaining variables inzp ZP_BYTE:201 [ gfx_mode::$48 ] -Uplifting [gfx_mode] best 14117476 combination reg byte a [ gfx_mode::$48 ] +Uplifting [gfx_mode] best 12603515 combination reg byte a [ gfx_mode::$48 ] Attempting to uplift remaining variables inzp ZP_BYTE:204 [ gfx_mode::$50 ] -Uplifting [gfx_mode] best 14117470 combination reg byte a [ gfx_mode::$50 ] +Uplifting [gfx_mode] best 12603509 combination reg byte a [ gfx_mode::$50 ] Attempting to uplift remaining variables inzp ZP_BYTE:207 [ gfx_mode::$52 ] -Uplifting [gfx_mode] best 14117464 combination reg byte a [ gfx_mode::$52 ] +Uplifting [gfx_mode] best 12603503 combination reg byte a [ gfx_mode::$52 ] Attempting to uplift remaining variables inzp ZP_BYTE:208 [ gfx_mode::$53 ] -Uplifting [gfx_mode] best 14117458 combination reg byte a [ gfx_mode::$53 ] +Uplifting [gfx_mode] best 12603497 combination reg byte a [ gfx_mode::$53 ] Attempting to uplift remaining variables inzp ZP_BYTE:209 [ gfx_mode::$54 ] -Uplifting [gfx_mode] best 14117452 combination reg byte a [ gfx_mode::$54 ] +Uplifting [gfx_mode] best 12603491 combination reg byte a [ gfx_mode::$54 ] Attempting to uplift remaining variables inzp ZP_BYTE:210 [ gfx_mode::$55 ] -Uplifting [gfx_mode] best 14117446 combination reg byte a [ gfx_mode::$55 ] +Uplifting [gfx_mode] best 12603485 combination reg byte a [ gfx_mode::$55 ] Attempting to uplift remaining variables inzp ZP_BYTE:211 [ gfx_mode::$56 ] -Uplifting [gfx_mode] best 14117440 combination reg byte a [ gfx_mode::$56 ] +Uplifting [gfx_mode] best 12603479 combination reg byte a [ gfx_mode::$56 ] Attempting to uplift remaining variables inzp ZP_BYTE:228 [ gfx_mode::$69 ] -Uplifting [gfx_mode] best 14117434 combination reg byte a [ gfx_mode::$69 ] +Uplifting [gfx_mode] best 12603473 combination reg byte a [ gfx_mode::$69 ] Attempting to uplift remaining variables inzp ZP_BYTE:229 [ gfx_mode::$70 ] -Uplifting [gfx_mode] best 14117428 combination reg byte a [ gfx_mode::$70 ] +Uplifting [gfx_mode] best 12603467 combination reg byte a [ gfx_mode::$70 ] Attempting to uplift remaining variables inzp ZP_BYTE:230 [ gfx_mode::$71 ] -Uplifting [gfx_mode] best 14117422 combination reg byte a [ gfx_mode::$71 ] +Uplifting [gfx_mode] best 12603461 combination reg byte a [ gfx_mode::$71 ] Attempting to uplift remaining variables inzp ZP_BYTE:233 [ gfx_mode::$75 ] -Uplifting [gfx_mode] best 14117416 combination reg byte a [ gfx_mode::$75 ] +Uplifting [gfx_mode] best 12603455 combination reg byte a [ gfx_mode::$75 ] Attempting to uplift remaining variables inzp ZP_BYTE:234 [ gfx_mode::$76 ] -Uplifting [gfx_mode] best 14117410 combination reg byte a [ gfx_mode::$76 ] +Uplifting [gfx_mode] best 12603449 combination reg byte a [ gfx_mode::$76 ] Attempting to uplift remaining variables inzp ZP_BYTE:235 [ gfx_mode::$77 ] -Uplifting [gfx_mode] best 14117404 combination reg byte a [ gfx_mode::$77 ] +Uplifting [gfx_mode] best 12603443 combination reg byte a [ gfx_mode::$77 ] Attempting to uplift remaining variables inzp ZP_BYTE:236 [ gfx_mode::$78 ] -Uplifting [gfx_mode] best 14117398 combination reg byte a [ gfx_mode::$78 ] +Uplifting [gfx_mode] best 12603437 combination reg byte a [ gfx_mode::$78 ] Attempting to uplift remaining variables inzp ZP_BYTE:237 [ gfx_mode::$79 ] -Uplifting [gfx_mode] best 14117392 combination reg byte a [ gfx_mode::$79 ] +Uplifting [gfx_mode] best 12603431 combination reg byte a [ gfx_mode::$79 ] Attempting to uplift remaining variables inzp ZP_BYTE:238 [ gfx_mode::$80 ] -Uplifting [gfx_mode] best 14117386 combination reg byte a [ gfx_mode::$80 ] +Uplifting [gfx_mode] best 12603425 combination reg byte a [ gfx_mode::$80 ] Attempting to uplift remaining variables inzp ZP_BYTE:239 [ gfx_mode::$81 ] -Uplifting [gfx_mode] best 14117380 combination reg byte a [ gfx_mode::$81 ] +Uplifting [gfx_mode] best 12603419 combination reg byte a [ gfx_mode::$81 ] Attempting to uplift remaining variables inzp ZP_BYTE:240 [ gfx_mode::$82 ] -Uplifting [gfx_mode] best 14117374 combination reg byte a [ gfx_mode::$82 ] +Uplifting [gfx_mode] best 12603413 combination reg byte a [ gfx_mode::$82 ] Attempting to uplift remaining variables inzp ZP_BYTE:247 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 14117368 combination reg byte a [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 12603407 combination reg byte a [ keyboard_event_scan::$14 ] Attempting to uplift remaining variables inzp ZP_BYTE:249 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 14117362 combination reg byte a [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 12603401 combination reg byte a [ keyboard_event_scan::$18 ] Attempting to uplift remaining variables inzp ZP_BYTE:250 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 14117356 combination reg byte a [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 12603395 combination reg byte a [ keyboard_event_pressed::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:251 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 14117350 combination reg byte a [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 12603389 combination reg byte a [ keyboard_event_scan::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:252 [ keyboard_event_pressed::return#3 ] -Uplifting [keyboard_event_pressed] best 14117344 combination reg byte a [ keyboard_event_pressed::return#3 ] +Uplifting [keyboard_event_pressed] best 12603383 combination reg byte a [ keyboard_event_pressed::return#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:253 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 14117338 combination reg byte a [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 12603377 combination reg byte a [ keyboard_event_scan::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] -Uplifting [keyboard_event_pressed] best 14117334 combination reg byte a [ keyboard_event_pressed::$0 ] +Uplifting [keyboard_event_pressed] best 12603373 combination reg byte a [ keyboard_event_pressed::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] -Uplifting [keyboard_event_pressed] best 14117330 combination reg byte a [ keyboard_event_pressed::$1 ] +Uplifting [keyboard_event_pressed] best 12603369 combination reg byte a [ keyboard_event_pressed::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:273 [ form_field_ptr::x#0 ] -Uplifting [form_field_ptr] best 14117324 combination reg byte a [ form_field_ptr::x#0 ] +Uplifting [form_field_ptr] best 12603363 combination reg byte a [ form_field_ptr::x#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:280 [ form_control::$5 ] -Uplifting [form_control] best 14117318 combination reg byte a [ form_control::$5 ] +Uplifting [form_control] best 12603357 combination reg byte a [ form_control::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:281 [ keyboard_event_get::return#4 ] -Uplifting [keyboard_event_get] best 14117312 combination reg byte a [ keyboard_event_get::return#4 ] +Uplifting [keyboard_event_get] best 12603351 combination reg byte a [ keyboard_event_get::return#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:283 [ form_control::$11 ] -Uplifting [form_control] best 14117306 combination reg byte a [ form_control::$11 ] +Uplifting [form_control] best 12603345 combination reg byte a [ form_control::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:284 [ form_control::$12 ] -Uplifting [form_control] best 14117300 combination reg byte a [ form_control::$12 ] +Uplifting [form_control] best 12603339 combination reg byte a [ form_control::$12 ] Attempting to uplift remaining variables inzp ZP_BYTE:285 [ form_control::$22 ] -Uplifting [form_control] best 14117294 combination reg byte a [ form_control::$22 ] +Uplifting [form_control] best 12603333 combination reg byte a [ form_control::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:286 [ form_control::$6 ] -Uplifting [form_control] best 14117288 combination reg byte a [ form_control::$6 ] +Uplifting [form_control] best 12603327 combination reg byte a [ form_control::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:330 [ bitmap_plot::$1 ] -Uplifting [bitmap_plot] best 14117282 combination reg byte a [ bitmap_plot::$1 ] +Uplifting [bitmap_plot] best 12603321 combination reg byte a [ bitmap_plot::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:282 [ form_control::key_event#0 ] -Uplifting [form_control] best 14117270 combination reg byte a [ form_control::key_event#0 ] +Uplifting [form_control] best 12603309 combination reg byte a [ form_control::key_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ gfx_mode::vic_control2#2 ] -Uplifting [gfx_mode] best 14117261 combination reg byte a [ gfx_mode::vic_control2#2 ] +Uplifting [gfx_mode] best 12603300 combination reg byte a [ gfx_mode::vic_control2#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 14117261 combination zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 12603300 combination zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] -Uplifting [gfx_init_plane_fill] best 14117256 combination reg byte x [ gfx_init_plane_fill::gfxbCpuBank#0 ] +Uplifting [gfx_init_plane_fill] best 12603295 combination reg byte x [ gfx_init_plane_fill::gfxbCpuBank#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:316 [ bitmap_line::y1#0 ] -Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:316 [ bitmap_line::y1#0 ] +Uplifting [bitmap_line] best 12603295 combination zp ZP_BYTE:316 [ bitmap_line::y1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:315 [ bitmap_line::y0#0 ] -Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:315 [ bitmap_line::y0#0 ] +Uplifting [bitmap_line] best 12603295 combination zp ZP_BYTE:315 [ bitmap_line::y0#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 14117241 combination reg byte a [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 12603280 combination reg byte a [ keyboard_event_pressed::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] -Uplifting [keyboard_event_pressed] best 14117241 combination zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] +Uplifting [keyboard_event_pressed] best 12603280 combination zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:313 [ bitmap_line::x0#0 ] -Uplifting [bitmap_line] best 14117241 combination zp ZP_BYTE:313 [ bitmap_line::x0#0 ] +Uplifting [bitmap_line] best 12603280 combination zp ZP_BYTE:313 [ bitmap_line::x0#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:318 [ bitmap_line::yd#2 ] -Uplifting [bitmap_line] best 14117231 combination reg byte y [ bitmap_line::yd#2 ] +Uplifting [bitmap_line] best 12603270 combination reg byte y [ bitmap_line::yd#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:319 [ bitmap_line::yd#1 ] -Uplifting [bitmap_line] best 14117221 combination reg byte y [ bitmap_line::yd#1 ] +Uplifting [bitmap_line] best 12603260 combination reg byte y [ bitmap_line::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:321 [ bitmap_line::yd#10 ] -Uplifting [bitmap_line] best 14117211 combination reg byte y [ bitmap_line::yd#10 ] +Uplifting [bitmap_line] best 12603250 combination reg byte y [ bitmap_line::yd#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:322 [ bitmap_line::yd#11 ] -Uplifting [bitmap_line] best 14117201 combination reg byte y [ bitmap_line::yd#11 ] +Uplifting [bitmap_line] best 12603240 combination reg byte y [ bitmap_line::yd#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:159 [ gfx_mode::plane_a_offs#0 ] -Uplifting [gfx_mode] best 14117199 combination reg byte y [ gfx_mode::plane_a_offs#0 ] +Uplifting [gfx_mode] best 12603238 combination reg byte x [ gfx_mode::plane_a_offs#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:186 [ gfx_mode::plane_b_offs#0 ] -Uplifting [gfx_mode] best 14117197 combination reg byte y [ gfx_mode::plane_b_offs#0 ] +Uplifting [gfx_mode] best 12603236 combination reg byte x [ gfx_mode::plane_b_offs#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:317 [ bitmap_line::xd#2 ] -Uplifting [bitmap_line] best 14117197 combination zp ZP_BYTE:317 [ bitmap_line::xd#2 ] +Uplifting [bitmap_line] best 12603236 combination zp ZP_BYTE:317 [ bitmap_line::xd#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:320 [ bitmap_line::xd#1 ] -Uplifting [bitmap_line] best 14117197 combination zp ZP_BYTE:320 [ bitmap_line::xd#1 ] +Uplifting [bitmap_line] best 12603236 combination zp ZP_BYTE:320 [ bitmap_line::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:220 [ gfx_mode::$65 ] -Uplifting [gfx_mode] best 14117197 combination zp ZP_BYTE:220 [ gfx_mode::$65 ] +Uplifting [gfx_mode] best 12603236 combination zp ZP_BYTE:220 [ gfx_mode::$65 ] Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 ] ] with [ zp ZP_WORD:231 [ get_vic_screen::return#11 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ get_vic_screen::return#5 ] ] with [ zp ZP_WORD:212 [ get_vic_screen::return#10 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:23 [ get_vic_charset::return#2 ] ] with [ zp ZP_WORD:222 [ get_vic_charset::return#4 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:26 [ get_plane::return#14 ] ] with [ zp ZP_DWORD:160 [ get_plane::return#16 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:26 [ get_plane::return#14 get_plane::return#16 ] ] with [ zp ZP_DWORD:187 [ get_plane::return#17 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ render_preset_name::name#13 ] ] with [ zp ZP_WORD:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] ] with [ zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] ] with [ zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] ] with [ zp ZP_BYTE:317 [ bitmap_line::xd#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 ] ] with [ zp ZP_BYTE:320 [ bitmap_line::xd#1 ] ] - score: 1 @@ -20951,24 +20944,24 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:266 [ form_fie Coalescing zero page register with common assignment [ zp ZP_WORD:266 [ form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 ] ] with [ zp ZP_WORD:276 [ form_field_ptr::return#3 form_control::field#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 ] ] with [ zp ZP_WORD:214 [ gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] ] with [ zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] with [ zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] ] with [ zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] ] with [ zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 ] ] with [ zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] ] with [ zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] ] with [ zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] ] with [ zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] ] with [ zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] ] with [ zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] ] with [ zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 ] ] with [ zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] ] with [ zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] ] with [ zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] ] with [ zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] ] with [ zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] with [ zp ZP_BYTE:220 [ gfx_mode::$65 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 ] ] with [ zp ZP_BYTE:337 [ bitmap_init::$6 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] with [ zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 ] ] with [ zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 ] ] with [ zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 ] ] with [ zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] ] with [ zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] ] with [ zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] ] with [ zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] ] with [ zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] ] with [ zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] ] with [ zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 ] ] with [ zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] ] with [ zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] ] with [ zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] ] with [ zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] ] with [ zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] with [ zp ZP_BYTE:220 [ gfx_mode::$65 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 ] ] with [ zp ZP_BYTE:337 [ bitmap_init::$6 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 ] ] with [ zp ZP_WORD:23 [ get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 ] ] with [ zp ZP_WORD:35 [ render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] ] with [ zp ZP_WORD:43 [ apply_preset::preset#14 ] ] @@ -21005,42 +20998,40 @@ Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 g Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] ] with [ zp ZP_WORD:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] ] with [ zp ZP_WORD:290 [ print_cls::$0 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 print_cls::$0 ] ] with [ zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] ] with [ zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] ] with [ zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 ] ] with [ zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] ] with [ zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] with [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] ] with [ zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] with [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] ] with [ zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] with [ zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 ] ] with [ zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 ] ] with [ zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] with [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] with [ zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] ] with [ zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] ] with [ zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] ] with [ zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] with [ zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] ] with [ zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] with [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] ] with [ zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] with [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] ] with [ zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] with [ zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_event_pressed::row_bits#0 ] ] with [ zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_event_pressed::row_bits#0 gfx_init_screen3::$1 ] ] with [ zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_event_pressed::row_bits#0 gfx_init_screen3::$1 gfx_init_screen2::col2#0 ] ] with [ zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] ] +Coalescing zero page register [ zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] ] with [ zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] with [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] Coalescing zero page register [ zp ZP_DWORD:26 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 ] ] with [ zp ZP_DWORD:58 [ gfx_init_plane_fill::plane_addr#3 ] ] -Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] ] with [ zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] ] with [ zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] ] with [ zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] with [ zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] ] with [ zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] ] with [ zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] ] with [ zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] with [ zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] ] with [ zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] ] with [ zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] ] with [ zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] with [ zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] ] Coalescing zero page register [ zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] ] with [ zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] Coalescing zero page register [ zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] ] with [ zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] ] Coalescing zero page register [ zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] with [ zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line::y1#0 ] ] Coalescing zero page register [ zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line::y1#0 ] ] with [ zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] Coalescing zero page register [ zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line::y1#0 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] with [ zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] ] -Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:3 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#14 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#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 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 gfx_init_plane_fill::$1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ] Allocated (was zp ZP_WORD:8) zp ZP_WORD:5 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 print_cls::$0 bitmap_plot::plotter_y#0 ] -Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:7 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ] -Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:8 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 keyboard_event_pressed::row_bits#0 ] -Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:9 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Allocated (was zp ZP_DWORD:26) zp ZP_DWORD:10 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ] -Allocated (was zp ZP_BYTE:31) zp ZP_BYTE:14 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] +Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:7 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_event_pressed::row_bits#0 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ] +Allocated (was zp ZP_BYTE:18) zp ZP_BYTE:8 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] +Allocated (was zp ZP_DWORD:26) zp ZP_DWORD:9 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ] +Allocated (was zp ZP_BYTE:31) zp ZP_BYTE:13 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +Allocated (was zp ZP_BYTE:32) zp ZP_BYTE:14 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Allocated (was zp ZP_BYTE:33) zp ZP_BYTE:15 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Allocated (was zp ZP_WORD:54) zp ZP_WORD:16 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 gfx_init_plane_8bppchunky::$6 ] Allocated (was zp ZP_BYTE:102) zp ZP_BYTE:18 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line::y1#0 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 keyboard_event_scan::row_scan#0 ] @@ -21219,9 +21210,9 @@ ASSEMBLER BEFORE OPTIMIZATION .label form_vic_bg3_lo = form_fields_val+$23 .label print_char_cursor = 5 .label print_line_cursor = $10 - .label keyboard_events_size = 9 - .label keyboard_modifiers = 2 - .label form_cursor_count = $e + .label keyboard_events_size = 8 + .label form_cursor_count = $d + .label form_field_idx = $e //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @68 [phi:@begin->@68] @@ -21265,8 +21256,9 @@ main: { jsr gfx_init //SEG19 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] b1_from_b7: - //SEG20 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG20 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta form_field_idx //SEG21 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size @@ -21302,11 +21294,11 @@ main: { //SEG35 gfx_mode // Change graphics mode to show the selected graphics mode gfx_mode: { - .label _31 = $a + .label _31 = 9 .label _33 = 3 .label _35 = 3 .label _37 = 3 - .label _45 = $a + .label _45 = 9 .label _47 = 3 .label _49 = 3 .label _51 = 3 @@ -21316,11 +21308,10 @@ gfx_mode: { .label _65 = 2 .label _66 = 3 .label _68 = 3 - .label plane_a = $a - .label plane_b = $a + .label plane_a = 9 + .label plane_b = 9 .label vic_colors = 3 .label col = 5 - .label cx = 7 .label cy = 2 //SEG36 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_line @@ -21333,13 +21324,13 @@ gfx_mode: { b23: //SEG39 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] b1_from_b23: - //SEG40 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuyy=vbuc1 - ldy #0|DTV_LINEAR + //SEG40 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuxx=vbuc1 + ldx #0|DTV_LINEAR jmp b1 //SEG41 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] b1_from_gfx_mode: - //SEG42 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuyy=vbuc1 - ldy #0 + //SEG42 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuxx=vbuc1 + ldx #0 jmp b1 //SEG43 gfx_mode::@1 b1: @@ -21350,10 +21341,10 @@ gfx_mode: { jmp b24 //SEG45 gfx_mode::@24 b24: - //SEG46 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG46 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_BORDER_OFF - tay + tax //SEG47 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] b2_from_b1: b2_from_b24: @@ -21368,10 +21359,10 @@ gfx_mode: { jmp b25 //SEG51 gfx_mode::@25 b25: - //SEG52 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG52 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_HIGHCOLOR - tay + tax //SEG53 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] b3_from_b2: b3_from_b25: @@ -21386,10 +21377,10 @@ gfx_mode: { jmp b26 //SEG57 gfx_mode::@26 b26: - //SEG58 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG58 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_OVERSCAN - tay + tax //SEG59 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] b4_from_b26: b4_from_b3: @@ -21404,10 +21395,10 @@ gfx_mode: { jmp b27 //SEG63 gfx_mode::@27 b27: - //SEG64 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG64 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_COLORRAM_OFF - tay + tax //SEG65 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] b5_from_b27: b5_from_b4: @@ -21422,10 +21413,10 @@ gfx_mode: { jmp b28 //SEG69 gfx_mode::@28 b28: - //SEG70 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG70 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_CHUNKY - tay + tax //SEG71 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] b6_from_b28: b6_from_b5: @@ -21433,8 +21424,8 @@ gfx_mode: { jmp b6 //SEG73 gfx_mode::@6 b6: - //SEG74 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuyy - sty DTV_CONTROL + //SEG74 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuxx + stx DTV_CONTROL //SEG75 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_ecm cmp #0 @@ -21446,13 +21437,13 @@ gfx_mode: { b29: //SEG78 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] b7_from_b29: - //SEG79 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuyy=vbuc1 - ldy #VIC_DEN|VIC_RSEL|3|VIC_ECM + //SEG79 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuxx=vbuc1 + ldx #VIC_DEN|VIC_RSEL|3|VIC_ECM jmp b7 //SEG80 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] b7_from_b6: - //SEG81 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuyy=vbuc1 - ldy #VIC_DEN|VIC_RSEL|3 + //SEG81 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuxx=vbuc1 + ldx #VIC_DEN|VIC_RSEL|3 jmp b7 //SEG82 gfx_mode::@7 b7: @@ -21463,10 +21454,10 @@ gfx_mode: { jmp b30 //SEG84 gfx_mode::@30 b30: - //SEG85 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG85 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #VIC_BMM - tay + tax //SEG86 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] b8_from_b30: b8_from_b7: @@ -21474,8 +21465,8 @@ gfx_mode: { jmp b8 //SEG88 gfx_mode::@8 b8: - //SEG89 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuyy - sty VIC_CONTROL + //SEG89 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuxx + stx VIC_CONTROL //SEG90 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_mcm cmp #0 @@ -21505,9 +21496,9 @@ gfx_mode: { asl asl asl - //SEG100 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG100 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuxx=vbuaa_bor__deref_pbuc1 ora form_a_start_lo - tay + tax //SEG101 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuaa=_deref_pbuc1 lda form_a_pattern //SEG102 [49] call get_plane @@ -21520,8 +21511,8 @@ gfx_mode: { //SEG106 gfx_mode::@46 b46: //SEG107 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 - //SEG108 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuyy - tya + //SEG108 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuxx + txa clc adc plane_a sta plane_a @@ -21590,9 +21581,9 @@ gfx_mode: { asl asl asl - //SEG126 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG126 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuxx=vbuaa_bor__deref_pbuc1 ora form_b_start_lo - tay + tax //SEG127 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuaa=_deref_pbuc1 lda form_b_pattern //SEG128 [72] call get_plane @@ -21605,8 +21596,8 @@ gfx_mode: { //SEG132 gfx_mode::@47 b47: //SEG133 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 - //SEG134 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuyy - tya + //SEG134 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuxx + txa clc adc plane_b sta plane_b @@ -21767,9 +21758,8 @@ gfx_mode: { b10: //SEG189 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] b11_from_b10: - //SEG190 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 - lda #0 - sta cx + //SEG190 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuxx=vbuc1 + ldx #0 //SEG191 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy //SEG192 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy jmp b11 @@ -21796,11 +21786,10 @@ gfx_mode: { bne !+ inc vic_colors+1 !: - //SEG201 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 - inc cx - //SEG202 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 - lda cx - cmp #$28 + //SEG201 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuxx=_inc_vbuxx + inx + //SEG202 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto gfx_mode::@11 -- vbuxx_neq_vbuc1_then_la1 + cpx #$28 bne b11_from_b11 jmp b32 //SEG203 gfx_mode::@32 @@ -21865,8 +21854,8 @@ gfx_mode: { beq b15_from_b33 //SEG221 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] b13_from_b33: - //SEG222 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuyy=vbuc1 - ldy #0 + //SEG222 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuxx=vbuc1 + ldx #0 jmp b13 // DTV Palette - Grey Tones //SEG223 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] @@ -21875,13 +21864,13 @@ gfx_mode: { jmp b13 //SEG225 gfx_mode::@13 b13: - //SEG226 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuyy=vbuyy - tya - sta DTV_PALETTE,y - //SEG227 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuyy=_inc_vbuyy - iny - //SEG228 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@13 -- vbuyy_neq_vbuc1_then_la1 - cpy #$10 + //SEG226 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + txa + sta DTV_PALETTE,x + //SEG227 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuxx=_inc_vbuxx + inx + //SEG228 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@13 -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 bne b13_from_b13 jmp b19 //SEG229 gfx_mode::@19 @@ -21927,18 +21916,18 @@ gfx_mode: { jmp b15 //SEG247 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] b15_from_b33: - //SEG248 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuyy=vbuc1 - ldy #0 + //SEG248 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuxx=vbuc1 + ldx #0 jmp b15 //SEG249 gfx_mode::@15 b15: - //SEG250 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy - lda DTV_PALETTE_DEFAULT,y - sta DTV_PALETTE,y - //SEG251 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuyy=_inc_vbuyy - iny - //SEG252 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@15 -- vbuyy_neq_vbuc1_then_la1 - cpy #$10 + //SEG250 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda DTV_PALETTE_DEFAULT,x + sta DTV_PALETTE,x + //SEG251 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG252 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@15 -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 bne b15_from_b15 jmp b19 } @@ -21982,9 +21971,8 @@ keyboard_event_get: { // Also stores current status of modifiers in keyboard_modifiers. keyboard_event_scan: { .label row_scan = $12 - .label keycode = 8 + .label keycode = 7 .label row = 2 - .label col = 7 //SEG267 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: //SEG268 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy @@ -22003,8 +21991,8 @@ keyboard_event_scan: { jmp b1 //SEG275 keyboard_event_scan::@1 b1: - //SEG276 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuaa=vbuz1 - lda row + //SEG276 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + ldx row //SEG277 [162] call keyboard_matrix_read jsr keyboard_matrix_read //SEG278 [163] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 @@ -22067,15 +22055,13 @@ keyboard_event_scan: { b21: //SEG301 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - //SEG302 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 - lda #0|KEY_MODIFIER_LSHIFT - sta keyboard_modifiers + //SEG302 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0|KEY_MODIFIER_LSHIFT jmp b9 //SEG303 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b9_from_b26: - //SEG304 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 - lda #0 - sta keyboard_modifiers + //SEG304 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0 jmp b9 //SEG305 keyboard_event_scan::@9 b9: @@ -22097,10 +22083,10 @@ keyboard_event_scan: { jmp b22 //SEG313 keyboard_event_scan::@22 b22: - //SEG314 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 - lda #KEY_MODIFIER_RSHIFT - ora keyboard_modifiers - sta keyboard_modifiers + //SEG314 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_RSHIFT + tax //SEG315 [182] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: @@ -22126,10 +22112,10 @@ keyboard_event_scan: { jmp b23 //SEG325 keyboard_event_scan::@23 b23: - //SEG326 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 - lda #KEY_MODIFIER_CTRL - ora keyboard_modifiers - sta keyboard_modifiers + //SEG326 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_CTRL + tax //SEG327 [188] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: @@ -22155,10 +22141,10 @@ keyboard_event_scan: { jmp b24 //SEG337 keyboard_event_scan::@24 b24: - //SEG338 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 - lda #KEY_MODIFIER_COMMODORE - ora keyboard_modifiers - sta keyboard_modifiers + //SEG338 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_COMMODORE + tax //SEG339 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] breturn_from_b24: breturn_from_b29: @@ -22173,9 +22159,8 @@ keyboard_event_scan: { b4_from_b25: //SEG344 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy //SEG345 [196] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG346 [196] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 - lda #0 - sta col + //SEG346 [196] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + ldx #0 jmp b4 //SEG347 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: @@ -22189,9 +22174,8 @@ keyboard_event_scan: { lda row_scan ldy row eor keyboard_scan_values,y - //SEG353 [198] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 - ldy col - and keyboard_matrix_col_bitmask,y + //SEG353 [198] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + and keyboard_matrix_col_bitmask,x //SEG354 [199] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b4 @@ -22205,10 +22189,9 @@ keyboard_event_scan: { jmp b16 //SEG357 keyboard_event_scan::@16 b16: - //SEG358 [201] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuz2 - lda row_scan - ldy col - and keyboard_matrix_col_bitmask,y + //SEG358 [201] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + lda keyboard_matrix_col_bitmask,x + and row_scan //SEG359 [202] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 @@ -22233,11 +22216,10 @@ keyboard_event_scan: { b5: //SEG366 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG367 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG368 [208] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 - lda col - cmp #8 + //SEG367 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + inx + //SEG368 [208] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + cpx #8 bne b4_from_b5 jmp b19 //SEG369 keyboard_event_scan::@19 @@ -22264,10 +22246,10 @@ keyboard_event_scan: { //SEG375 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed -// keyboard_event_pressed(byte zeropage(7) keycode) +// keyboard_event_pressed(byte zeropage(2) keycode) keyboard_event_pressed: { - .label row_bits = 8 - .label keycode = 7 + .label row_bits = 7 + .label keycode = 2 //SEG376 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr @@ -22296,11 +22278,10 @@ keyboard_event_pressed: { // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. -// keyboard_matrix_read(byte register(A) rowid) +// keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - //SEG383 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuaa - tay - lda keyboard_matrix_row_bitmask,y + //SEG383 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A //SEG384 [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B @@ -22441,7 +22422,7 @@ get_vic_charset: { // Get plane address from a plane index (from the form) // get_plane(byte register(A) idx) get_plane: { - .label return = $a + .label return = 9 //SEG424 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn_from_get_plane @@ -22850,8 +22831,8 @@ form_mode: { sta DTV_PLANEA_START_HI //SEG534 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] b1_from_b29: - //SEG535 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuyy=vbuc1 - ldy #0 + //SEG535 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuxx=vbuc1 + ldx #0 jmp b1 // DTV Palette - default //SEG536 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] @@ -22860,13 +22841,13 @@ form_mode: { jmp b1 //SEG538 form_mode::@1 b1: - //SEG539 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy - lda DTV_PALETTE_DEFAULT,y - sta DTV_PALETTE,y - //SEG540 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuyy=_inc_vbuyy - iny - //SEG541 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto form_mode::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$10 + //SEG539 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda DTV_PALETTE_DEFAULT,x + sta DTV_PALETTE,x + //SEG540 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG541 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto form_mode::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 bne b1_from_b1 jmp b10 //SEG542 form_mode::@10 @@ -22912,8 +22893,8 @@ form_mode: { b7: //SEG560 [294] call form_control jsr form_control - //SEG561 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuyy - tya + //SEG561 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuxx + txa jmp b30 //SEG562 form_mode::@30 b30: @@ -23215,7 +23196,8 @@ form_render_values: { jmp b1 //SEG653 form_render_values::@1 b1: - //SEG654 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 + //SEG654 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 -- vbuyy=vbuz1 + ldy idx //SEG655 [333] call form_field_ptr //SEG656 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] form_field_ptr_from_b1: @@ -23227,9 +23209,8 @@ form_render_values: { b3: //SEG660 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 //SEG661 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 - ldy idx - lda form_fields_val,y - tay + ldx idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y @@ -23248,22 +23229,18 @@ form_render_values: { //SEG666 form_field_ptr // Get the screen address of a form field // field_idx is the index of the field to get the screen address for -// form_field_ptr(byte zeropage(2) field_idx) +// form_field_ptr(byte register(Y) field_idx) form_field_ptr: { .label return = 3 - .label field_idx = 2 .label _2 = 3 - //SEG667 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 - ldy field_idx - lda form_fields_y,y - //SEG668 [342] (word~) form_field_ptr::$2 ← *((const byte[$19]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[$19]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa - tay - lda form_line_hi,y + //SEG667 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx form_fields_y,y + //SEG668 [342] (word~) form_field_ptr::$2 ← *((const byte[$19]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[$19]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda form_line_hi,x sta _2+1 - lda form_line_lo,y + lda form_line_lo,x sta _2 - //SEG669 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 - ldy field_idx + //SEG669 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuyy lda form_fields_x,y //SEG670 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz1_plus_vbuaa clc @@ -23474,8 +23451,8 @@ apply_preset: { // Returns 0 if space is not pressed, non-0 if space is pressed form_control: { .label field = 3 - //SEG731 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuxx - stx form_field_ptr.field_idx + //SEG731 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuyy=vbuz1 + ldy form_field_idx //SEG732 [365] call form_field_ptr //SEG733 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] form_field_ptr_from_form_control: @@ -23555,24 +23532,26 @@ form_control: { // Unblink the cursor ldy #0 sta (field),y - //SEG762 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 - lda #KEY_MODIFIER_SHIFT - and keyboard_modifiers + //SEG762 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuxx_band_vbuc1 + txa + and #KEY_MODIFIER_SHIFT //SEG763 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 jmp b19 //SEG764 form_control::@19 b19: - //SEG765 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuxx=_dec_vbuxx - dex - //SEG766 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@37 -- vbuxx_neq_vbuc1_then_la1 - cpx #$ff + //SEG765 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuz1=_dec_vbuz1 + dec form_field_idx + //SEG766 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@37 -- vbuz1_neq_vbuc1_then_la1 + lda form_field_idx + cmp #$ff bne b37_from_b19 //SEG767 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] b7_from_b19: - //SEG768 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuxx=vbuc1 - ldx #form_fields_cnt-1 + //SEG768 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuz1=vbuc1 + lda #form_fields_cnt-1 + sta form_field_idx jmp b7 //SEG769 form_control::@7 b7: @@ -23582,8 +23561,8 @@ form_control: { //SEG772 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count - //SEG773 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuyy=vbuc1 - ldy #0 + //SEG773 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuxx=vbuc1 + ldx #0 jmp breturn //SEG774 form_control::@return breturn: @@ -23601,15 +23580,17 @@ form_control: { jmp b7 //SEG780 form_control::@5 b5: - //SEG781 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuxx=_inc_vbuxx - inx - //SEG782 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuxx_neq_vbuc1_then_la1 - cpx #form_fields_cnt + //SEG781 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuz1=_inc_vbuz1 + inc form_field_idx + //SEG782 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuz1_neq_vbuc1_then_la1 + lda form_field_idx + cmp #form_fields_cnt bne b38_from_b5 //SEG783 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] b7_from_b5: - //SEG784 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuxx=vbuc1 - ldx #0 + //SEG784 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuz1=vbuc1 + lda #0 + sta form_field_idx jmp b7 //SEG785 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] b38_from_b5: @@ -23625,34 +23606,37 @@ form_control: { jmp b24 //SEG789 form_control::@24 b24: - //SEG790 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 - lda #KEY_MODIFIER_SHIFT - and keyboard_modifiers + //SEG790 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuxx_band_vbuc1 + txa + and #KEY_MODIFIER_SHIFT //SEG791 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 jmp b25 //SEG792 form_control::@25 b25: - //SEG793 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx + //SEG793 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1 + ldx form_field_idx dec form_fields_val,x - //SEG794 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@12 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 - lda form_fields_val,x + //SEG794 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@12 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + ldy form_field_idx + lda form_fields_val,y cmp #$ff bne b12 jmp b26 //SEG795 form_control::@26 b26: - //SEG796 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda form_fields_max,x - sta form_fields_val,x + //SEG796 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + ldy form_field_idx + lda form_fields_max,y + sta form_fields_val,y jmp b12 //SEG797 form_control::@12 b12: - //SEG798 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx + //SEG798 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 // Render field value - lda form_fields_val,x - tay + ldx form_field_idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y @@ -23661,26 +23645,27 @@ form_control: { breturn_from_b39: //SEG800 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy //SEG801 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy - //SEG802 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuyy=vbuc1 - ldy #0 + //SEG802 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuxx=vbuc1 + ldx #0 jmp breturn //SEG803 form_control::@10 b10: - //SEG804 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx + //SEG804 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 + ldx form_field_idx inc form_fields_val,x - //SEG805 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuxx_le_pbuc2_derefidx_vbuxx_then_la1 - txa - tay - lda form_fields_val,x + //SEG805 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1 + ldy form_field_idx + lda form_fields_val,y cmp form_fields_max,y bcc b12 beq b12 jmp b28 //SEG806 form_control::@28 b28: - //SEG807 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG807 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + ldy form_field_idx lda #0 - sta form_fields_val,x + sta form_fields_val,y jmp b12 //SEG808 form_control::@9 b9: @@ -23691,8 +23676,8 @@ form_control: { breturn_from_b9: //SEG811 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy //SEG812 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy - //SEG813 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:form_control::@9->form_control::@return#2] -- vbuyy=vbuc1 - ldy #$ff + //SEG813 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:form_control::@9->form_control::@return#2] -- vbuxx=vbuc1 + ldx #$ff jmp breturn //SEG814 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] b39_from_b9: @@ -23727,8 +23712,8 @@ form_set_screen: { .label line = 3 //SEG824 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] b1_from_form_set_screen: - //SEG825 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuyy=vbuc1 - ldy #0 + //SEG825 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuxx=vbuc1 + ldx #0 //SEG826 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 lda # (byte*) form_set_screen::line#2 -- vbuaa=_hi_pbuz1 lda line+1 - //SEG834 [414] *((const byte[$19]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuyy=vbuaa - sta form_line_hi,y + //SEG834 [414] *((const byte[$19]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuxx=vbuaa + sta form_line_hi,x //SEG835 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc @@ -23758,10 +23743,10 @@ form_set_screen: { bcc !+ inc line+1 !: - //SEG836 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuyy=_inc_vbuyy - iny - //SEG837 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto form_set_screen::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$19 + //SEG836 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuxx=_inc_vbuxx + inx + //SEG837 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto form_set_screen::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$19 bne b1_from_b1 jmp breturn //SEG838 form_set_screen::@return @@ -24110,7 +24095,7 @@ gfx_init_plane_full: { } //SEG958 gfx_init_plane_fill // Initialize 320*200 1bpp pixel ($2000) plane with identical bytes -// gfx_init_plane_fill(dword zeropage($a) plane_addr, byte zeropage(2) fill) +// gfx_init_plane_fill(dword zeropage(9) plane_addr, byte zeropage(2) fill) gfx_init_plane_fill: { .label _0 = $13 .label _1 = 3 @@ -24119,7 +24104,7 @@ gfx_init_plane_fill: { .label _6 = 3 .label gfxb = 3 .label by = 7 - .label plane_addr = $a + .label plane_addr = 9 .label fill = 2 //SEG959 [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vduz1=vduz2_rol_2 lda plane_addr @@ -24607,7 +24592,7 @@ gfx_init_plane_charset8: { .label bits = 8 .label chargen = 3 .label gfxa = 5 - .label col = 9 + .label col = $d .label cr = 7 .label ch = 2 //SEG1127 [562] call dtvSetCpuBankSegment1 @@ -24979,10 +24964,10 @@ gfx_init_vic_bitmap: { } //SEG1269 bitmap_line // Draw a line on the bitmap -// bitmap_line(byte zeropage(9) x0, byte register(X) x1, byte zeropage($f) y0, byte zeropage($12) y1) +// bitmap_line(byte zeropage($d) x0, byte register(X) x1, byte zeropage($f) y0, byte zeropage($12) y1) bitmap_line: { .label xd = 8 - .label x0 = 9 + .label x0 = $d .label y0 = $f .label y1 = $12 //SEG1270 [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuxx_then_la1 @@ -25237,11 +25222,11 @@ bitmap_line: { jmp breturn } //SEG1395 bitmap_line_xdyi -// bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) +// bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyi: { .label x = $e .label y = $f - .label x1 = 9 + .label x1 = $d .label xd = 8 .label yd = 7 .label e = $12 @@ -25356,7 +25341,7 @@ bitmap_line_ydxi: { .label y1 = $12 .label yd = 7 .label xd = 8 - .label e = 9 + .label e = $d //SEG1432 [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr @@ -25425,11 +25410,11 @@ bitmap_line_ydxi: { rts } //SEG1459 bitmap_line_xdyd -// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) +// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyd: { .label x = $e .label y = $f - .label x1 = 9 + .label x1 = $d .label xd = 8 .label yd = 7 .label e = $12 @@ -25507,7 +25492,7 @@ bitmap_line_ydxd: { .label y1 = $f .label yd = 7 .label xd = 8 - .label e = 9 + .label e = $d //SEG1488 [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr @@ -26611,7 +26596,7 @@ Removing instruction jmp b3 Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction lda #0 with TXA +Removing instruction lda #0 Removing instruction lda _35+1 Removing instruction lda _49+1 Removing instruction lda _68+1 @@ -26811,7 +26796,6 @@ Removing instruction b22_from_render_preset_name: Removing instruction b22_from_b33: Removing instruction print_str_at_from_b22: Removing instruction b1_from_b3: -Removing instruction form_field_ptr_from_b1: Removing instruction b34_from_b33: Removing instruction b22_from_apply_preset: Removing instruction b22_from_b34: @@ -27055,6 +27039,7 @@ Removing instruction b1_from_print_str_at: Removing instruction breturn: Removing instruction b1_from_b2: Removing instruction b1_from_form_render_values: +Removing instruction form_field_ptr_from_b1: Removing instruction b3: Removing instruction breturn: Removing instruction breturn: @@ -27330,9 +27315,10 @@ Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination -Removing instruction ldy col -Replacing instruction ldy #0 with TAY +Replacing instruction ldx #0 with TAX Removing instruction lda form_fields_val +Removing instruction ldy form_field_idx +Removing instruction ldy form_field_idx Removing instruction lda y0 Removing instruction lda y0 Succesful ASM optimization Pass5UnnecesaryLoadElimination @@ -27362,18 +27348,18 @@ Removing instruction b37: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b7 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [767] beq b5 to bne -Fixing long branch [771] beq b6 to bne -Fixing long branch [775] beq b7 to bne -Fixing long branch [779] beq b8 to bne -Fixing long branch [765] beq b4 to bne -Fixing long branch [785] beq b9 to bne -Fixing long branch [789] beq b10 to bne -Fixing long branch [793] beq b11 to bne -Fixing long branch [797] beq b12 to bne -Fixing long branch [763] beq b3 to bne -Fixing long branch [803] beq b13 to bne -Fixing long branch [1349] bmi b2 to bpl +Fixing long branch [757] beq b5 to bne +Fixing long branch [761] beq b6 to bne +Fixing long branch [765] beq b7 to bne +Fixing long branch [769] beq b8 to bne +Fixing long branch [755] beq b4 to bne +Fixing long branch [775] beq b9 to bne +Fixing long branch [779] beq b10 to bne +Fixing long branch [783] beq b11 to bne +Fixing long branch [787] beq b12 to bne +Fixing long branch [753] beq b3 to bne +Fixing long branch [793] beq b13 to bne +Fixing long branch [1335] bmi b2 to bpl FINAL SYMBOL TABLE (label) @68 @@ -27815,7 +27801,7 @@ FINAL SYMBOL TABLE (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 x0 zp ZP_BYTE:9 1.260869565217391 +(byte) bitmap_line::x0#0 x0 zp ZP_BYTE:13 1.260869565217391 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 reg byte x 1.3181818181818181 (byte) bitmap_line::xd @@ -27850,9 +27836,9 @@ FINAL SYMBOL TABLE (byte) bitmap_line_xdyd::x#3 x zp ZP_BYTE:14 76.25 (byte) bitmap_line_xdyd::x#6 x zp ZP_BYTE:14 3.0 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:9 7.5 +(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:13 7.5 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 xd zp ZP_BYTE:8 2.0 (byte) bitmap_line_xdyd::xd#1 xd zp ZP_BYTE:8 2.0 @@ -27888,9 +27874,9 @@ FINAL SYMBOL TABLE (byte) bitmap_line_xdyi::x#3 x zp ZP_BYTE:14 76.25 (byte) bitmap_line_xdyi::x#6 x zp ZP_BYTE:14 3.0 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 x1 zp ZP_BYTE:9 7.5 +(byte) bitmap_line_xdyi::x1#0 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyi::x1#1 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyi::x1#6 x1 zp ZP_BYTE:13 7.5 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#0 xd zp ZP_BYTE:8 2.0 (byte) bitmap_line_xdyi::xd#1 xd zp ZP_BYTE:8 2.0 @@ -27914,11 +27900,11 @@ FINAL SYMBOL TABLE (label) bitmap_line_ydxd::@5 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp ZP_BYTE:9 4.0 -(byte) bitmap_line_ydxd::e#1 e zp ZP_BYTE:9 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 e zp ZP_BYTE:9 202.0 -(byte) bitmap_line_ydxd::e#3 e zp ZP_BYTE:9 40.8 -(byte) bitmap_line_ydxd::e#6 e zp ZP_BYTE:9 101.0 +(byte) bitmap_line_ydxd::e#0 e zp ZP_BYTE:13 4.0 +(byte) bitmap_line_ydxd::e#1 e zp ZP_BYTE:13 134.66666666666666 +(byte) bitmap_line_ydxd::e#2 e zp ZP_BYTE:13 202.0 +(byte) bitmap_line_ydxd::e#3 e zp ZP_BYTE:13 40.8 +(byte) bitmap_line_ydxd::e#6 e zp ZP_BYTE:13 101.0 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#0 reg byte x 1.0 (byte) bitmap_line_ydxd::x#1 reg byte x 1.0 @@ -27952,11 +27938,11 @@ FINAL SYMBOL TABLE (label) bitmap_line_ydxi::@5 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp ZP_BYTE:9 4.0 -(byte) bitmap_line_ydxi::e#1 e zp ZP_BYTE:9 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 e zp ZP_BYTE:9 202.0 -(byte) bitmap_line_ydxi::e#3 e zp ZP_BYTE:9 40.8 -(byte) bitmap_line_ydxi::e#6 e zp ZP_BYTE:9 101.0 +(byte) bitmap_line_ydxi::e#0 e zp ZP_BYTE:13 4.0 +(byte) bitmap_line_ydxi::e#1 e zp ZP_BYTE:13 134.66666666666666 +(byte) bitmap_line_ydxi::e#2 e zp ZP_BYTE:13 202.0 +(byte) bitmap_line_ydxi::e#3 e zp ZP_BYTE:13 40.8 +(byte) bitmap_line_ydxi::e#6 e zp ZP_BYTE:13 101.0 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#0 reg byte x 1.0 (byte) bitmap_line_ydxi::x#1 reg byte x 1.0 @@ -28085,7 +28071,7 @@ FINAL SYMBOL TABLE (byte) form_control::key_event#0 reg byte a 2.6666666666666665 (byte) form_control::return (byte) form_control::return#0 reg byte a 2002.0 -(byte) form_control::return#2 reg byte y 333.6666666666667 +(byte) form_control::return#2 reg byte x 333.6666666666667 (byte*) form_ctrl_bmm (const byte*) form_ctrl_bmm#0 form_ctrl_bmm = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) form_ctrl_borof @@ -28105,28 +28091,28 @@ FINAL SYMBOL TABLE (byte*) form_ctrl_overs (const byte*) form_ctrl_overs#0 form_ctrl_overs = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 9 (signed byte) form_cursor_count -(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:14 0.3333333333333333 -(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:14 0.4 -(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:14 65.82352941176472 -(signed byte) form_cursor_count#21 form_cursor_count zp ZP_BYTE:14 158.0 -(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:14 2.0 +(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:13 0.3333333333333333 +(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:13 0.4 +(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:13 65.82352941176472 +(signed byte) form_cursor_count#21 form_cursor_count zp ZP_BYTE:13 158.0 +(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:13 2.0 (byte*) form_dtv_palet (const byte*) form_dtv_palet#0 form_dtv_palet = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) $1b (byte) form_field_idx -(byte) form_field_idx#1 reg byte x 0.3333333333333333 -(byte) form_field_idx#18 reg byte x 65.94117647058826 -(byte) form_field_idx#28 reg byte x 29.17948717948718 -(byte) form_field_idx#32 reg byte x 6.0 -(byte) form_field_idx#44 reg byte x 2.0 -(byte) form_field_idx#45 reg byte x 2.0 +(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:14 0.3333333333333333 +(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:14 65.94117647058826 +(byte) form_field_idx#28 form_field_idx zp ZP_BYTE:14 29.17948717948718 +(byte) form_field_idx#32 form_field_idx zp ZP_BYTE:14 6.0 +(byte) form_field_idx#44 form_field_idx zp ZP_BYTE:14 2.0 +(byte) form_field_idx#45 form_field_idx zp ZP_BYTE:14 2.0 (byte*()) form_field_ptr((byte) form_field_ptr::field_idx) (word~) form_field_ptr::$2 $2 zp ZP_WORD:3 1.0 (label) form_field_ptr::@return (byte*) form_field_ptr::field (byte) form_field_ptr::field_idx -(byte) form_field_ptr::field_idx#0 field_idx zp ZP_BYTE:2 2002.0 -(byte) form_field_ptr::field_idx#1 field_idx zp ZP_BYTE:2 4.0 -(byte) form_field_ptr::field_idx#2 field_idx zp ZP_BYTE:2 335.66666666666674 +(byte) form_field_ptr::field_idx#0 reg byte y 2002.0 +(byte) form_field_ptr::field_idx#1 reg byte y 4.0 +(byte) form_field_ptr::field_idx#2 reg byte y 335.66666666666674 (byte*) form_field_ptr::line (byte*) form_field_ptr::return (byte*) form_field_ptr::return#0 return zp ZP_WORD:3 251.25 @@ -28135,7 +28121,7 @@ FINAL SYMBOL TABLE (byte) form_field_ptr::x (byte) form_field_ptr::x#0 reg byte a 4.0 (byte) form_field_ptr::y -(byte) form_field_ptr::y#0 reg byte a 6.0 +(byte) form_field_ptr::y#0 reg byte x 6.0 (byte) form_fields_cnt (const byte) form_fields_cnt#0 form_fields_cnt = (byte/signed byte/word/signed word/dword/signed dword) $24 (byte[]) form_fields_max @@ -28173,8 +28159,8 @@ FINAL SYMBOL TABLE (label) form_mode::@8 (label) form_mode::@return (byte) form_mode::i -(byte) form_mode::i#1 reg byte y 151.5 -(byte) form_mode::i#2 reg byte y 202.0 +(byte) form_mode::i#1 reg byte x 151.5 +(byte) form_mode::i#2 reg byte x 202.0 (byte) form_mode::preset_current (byte) form_mode::preset_current#0 preset_current zp ZP_BYTE:15 4.0 (byte) form_mode::preset_current#1 preset_current zp ZP_BYTE:15 50.5 @@ -28199,8 +28185,8 @@ FINAL SYMBOL TABLE (byte*) form_set_screen::line#2 line zp ZP_WORD:3 80.8 (byte*) form_set_screen::screen (byte) form_set_screen::y -(byte) form_set_screen::y#1 reg byte y 151.5 -(byte) form_set_screen::y#2 reg byte y 67.33333333333333 +(byte) form_set_screen::y#1 reg byte x 151.5 +(byte) form_set_screen::y#2 reg byte x 67.33333333333333 (byte*) form_vic_bg0_hi (const byte*) form_vic_bg0_hi#0 form_vic_bg0_hi = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) $1c (byte*) form_vic_bg0_lo @@ -28244,9 +28230,9 @@ FINAL SYMBOL TABLE (byte) get_plane::idx#1 reg byte a 4.0 (byte) get_plane::idx#10 reg byte a 2.285714285714285 (dword) get_plane::return -(dword) get_plane::return#14 return zp ZP_DWORD:10 1.0 -(dword) get_plane::return#16 return zp ZP_DWORD:10 4.0 -(dword) get_plane::return#17 return zp ZP_DWORD:10 4.0 +(dword) get_plane::return#14 return zp ZP_DWORD:9 1.0 +(dword) get_plane::return#16 return zp ZP_DWORD:9 4.0 +(dword) get_plane::return#17 return zp ZP_DWORD:9 4.0 (byte*()) get_vic_charset((byte) get_vic_charset::idx) (label) get_vic_charset::@3 (label) get_vic_charset::@4 @@ -28364,10 +28350,10 @@ FINAL SYMBOL TABLE (byte*) gfx_init_plane_charset8::chargen#2 chargen zp ZP_WORD:3 157.0 (byte*) gfx_init_plane_charset8::chargen#3 chargen zp ZP_WORD:3 22.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 col zp ZP_BYTE:9 302.0 -(byte) gfx_init_plane_charset8::col#2 col zp ZP_BYTE:9 388.0 -(byte) gfx_init_plane_charset8::col#5 col zp ZP_BYTE:9 71.0 -(byte) gfx_init_plane_charset8::col#6 col zp ZP_BYTE:9 22.0 +(byte) gfx_init_plane_charset8::col#1 col zp ZP_BYTE:13 302.0 +(byte) gfx_init_plane_charset8::col#2 col zp ZP_BYTE:13 388.0 +(byte) gfx_init_plane_charset8::col#5 col zp ZP_BYTE:13 71.0 +(byte) gfx_init_plane_charset8::col#6 col zp ZP_BYTE:13 22.0 (byte) gfx_init_plane_charset8::cp (byte) gfx_init_plane_charset8::cp#1 reg byte x 1501.5 (byte) gfx_init_plane_charset8::cp#2 reg byte x 222.44444444444446 @@ -28410,7 +28396,7 @@ FINAL SYMBOL TABLE (byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte x 2.0 (byte) gfx_init_plane_fill::gfxbCpuBank#1 reg byte x 20.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.5714285714285714 +(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:9 0.5714285714285714 (void()) gfx_init_plane_full() (label) gfx_init_plane_full::@return (void()) gfx_init_plane_horisontal() @@ -28588,7 +28574,7 @@ FINAL SYMBOL TABLE (const byte[]) gfx_init_vic_bitmap::lines_y#0 lines_y = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/word/signed word/dword/signed dword) $c7, (byte/word/signed word/dword/signed dword) $c7, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $64, (byte/word/signed word/dword/signed dword) $c7, (byte/signed byte/word/signed word/dword/signed dword) $64, (byte/signed byte/word/signed word/dword/signed dword) 0 } (void()) gfx_mode() (byte~) gfx_mode::$29 reg byte a 4.0 -(dword~) gfx_mode::$31 $31 zp ZP_DWORD:10 4.0 +(dword~) gfx_mode::$31 $31 zp ZP_DWORD:9 4.0 (word~) gfx_mode::$33 $33 zp ZP_WORD:3 4.0 (byte~) gfx_mode::$34 reg byte a 4.0 (word~) gfx_mode::$35 $35 zp ZP_WORD:3 4.0 @@ -28600,7 +28586,7 @@ FINAL SYMBOL TABLE (byte~) gfx_mode::$41 reg byte a 4.0 (byte~) gfx_mode::$42 reg byte a 4.0 (byte~) gfx_mode::$43 reg byte a 4.0 -(dword~) gfx_mode::$45 $45 zp ZP_DWORD:10 4.0 +(dword~) gfx_mode::$45 $45 zp ZP_DWORD:9 4.0 (word~) gfx_mode::$47 $47 zp ZP_WORD:3 4.0 (byte~) gfx_mode::$48 reg byte a 4.0 (word~) gfx_mode::$49 $49 zp ZP_WORD:3 4.0 @@ -28667,48 +28653,48 @@ FINAL SYMBOL TABLE (byte*) gfx_mode::col#2 col zp ZP_WORD:5 1552.0 (byte*) gfx_mode::col#3 col zp ZP_WORD:5 202.0 (byte) gfx_mode::cx -(byte) gfx_mode::cx#1 cx zp ZP_BYTE:7 1501.5 -(byte) gfx_mode::cx#2 cx zp ZP_BYTE:7 500.5 +(byte) gfx_mode::cx#1 reg byte x 1501.5 +(byte) gfx_mode::cx#2 reg byte x 500.5 (byte) gfx_mode::cy (byte) gfx_mode::cy#1 cy zp ZP_BYTE:2 151.5 (byte) gfx_mode::cy#4 cy zp ZP_BYTE:2 28.857142857142858 (byte) gfx_mode::dtv_control -(byte) gfx_mode::dtv_control#10 reg byte y 4.0 -(byte) gfx_mode::dtv_control#11 reg byte y 4.0 -(byte) gfx_mode::dtv_control#12 reg byte y 6.0 -(byte) gfx_mode::dtv_control#13 reg byte y 4.0 -(byte) gfx_mode::dtv_control#14 reg byte y 2.0 -(byte) gfx_mode::dtv_control#15 reg byte y 4.0 -(byte) gfx_mode::dtv_control#2 reg byte y 4.0 -(byte) gfx_mode::dtv_control#3 reg byte y 4.0 -(byte) gfx_mode::dtv_control#4 reg byte y 4.0 -(byte) gfx_mode::dtv_control#5 reg byte y 4.0 -(byte) gfx_mode::dtv_control#6 reg byte y 4.0 +(byte) gfx_mode::dtv_control#10 reg byte x 4.0 +(byte) gfx_mode::dtv_control#11 reg byte x 4.0 +(byte) gfx_mode::dtv_control#12 reg byte x 6.0 +(byte) gfx_mode::dtv_control#13 reg byte x 4.0 +(byte) gfx_mode::dtv_control#14 reg byte x 2.0 +(byte) gfx_mode::dtv_control#15 reg byte x 4.0 +(byte) gfx_mode::dtv_control#2 reg byte x 4.0 +(byte) gfx_mode::dtv_control#3 reg byte x 4.0 +(byte) gfx_mode::dtv_control#4 reg byte x 4.0 +(byte) gfx_mode::dtv_control#5 reg byte x 4.0 +(byte) gfx_mode::dtv_control#6 reg byte x 4.0 (byte) gfx_mode::i -(byte) gfx_mode::i#1 reg byte y 151.5 -(byte) gfx_mode::i#2 reg byte y 202.0 +(byte) gfx_mode::i#1 reg byte x 151.5 +(byte) gfx_mode::i#2 reg byte x 202.0 (byte) gfx_mode::j -(byte) gfx_mode::j#1 reg byte y 151.5 -(byte) gfx_mode::j#2 reg byte y 202.0 +(byte) gfx_mode::j#1 reg byte x 151.5 +(byte) gfx_mode::j#2 reg byte x 202.0 (byte) gfx_mode::keyboard_event (byte) gfx_mode::keyboard_event#0 reg byte a 202.0 (dword) gfx_mode::plane_a -(dword) gfx_mode::plane_a#0 plane_a zp ZP_DWORD:10 1.1428571428571428 +(dword) gfx_mode::plane_a#0 plane_a zp ZP_DWORD:9 1.1428571428571428 (byte) gfx_mode::plane_a_offs -(byte) gfx_mode::plane_a_offs#0 reg byte y 0.8 +(byte) gfx_mode::plane_a_offs#0 reg byte x 0.8 (dword) gfx_mode::plane_b -(dword) gfx_mode::plane_b#0 plane_b zp ZP_DWORD:10 1.1428571428571428 +(dword) gfx_mode::plane_b#0 plane_b zp ZP_DWORD:9 1.1428571428571428 (byte) gfx_mode::plane_b_offs -(byte) gfx_mode::plane_b_offs#0 reg byte y 0.8 +(byte) gfx_mode::plane_b_offs#0 reg byte x 0.8 (byte*) gfx_mode::vic_colors (byte*) gfx_mode::vic_colors#0 vic_colors zp ZP_WORD:3 4.0 (byte*) gfx_mode::vic_colors#1 vic_colors zp ZP_WORD:3 420.59999999999997 (byte*) gfx_mode::vic_colors#2 vic_colors zp ZP_WORD:3 1034.6666666666667 (byte*) gfx_mode::vic_colors#3 vic_colors zp ZP_WORD:3 204.0 (byte) gfx_mode::vic_control -(byte) gfx_mode::vic_control#2 reg byte y 4.0 -(byte) gfx_mode::vic_control#4 reg byte y 6.0 -(byte) gfx_mode::vic_control#5 reg byte y 2.0 +(byte) gfx_mode::vic_control#2 reg byte x 4.0 +(byte) gfx_mode::vic_control#4 reg byte x 6.0 +(byte) gfx_mode::vic_control#5 reg byte x 2.0 (byte) gfx_mode::vic_control2 (byte) gfx_mode::vic_control2#2 reg byte a 2.0 (byte[]) keyboard_char_keycodes @@ -28725,7 +28711,7 @@ FINAL SYMBOL TABLE (byte~) keyboard_event_pressed::$1 reg byte a 4.0 (label) keyboard_event_pressed::@return (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#4 keycode zp ZP_BYTE:7 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#4 keycode zp ZP_BYTE:2 1.3333333333333333 (byte) keyboard_event_pressed::return (byte) keyboard_event_pressed::return#0 reg byte a 4.0 (byte) keyboard_event_pressed::return#1 reg byte a 4.0 @@ -28733,7 +28719,7 @@ FINAL SYMBOL TABLE (byte) keyboard_event_pressed::return#2 reg byte a 4.0 (byte) keyboard_event_pressed::return#3 reg byte a 4.0 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:8 2.0 +(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:7 2.0 (void()) keyboard_event_scan() (byte/word/dword~) keyboard_event_scan::$11 reg byte a 200002.0 (byte~) keyboard_event_scan::$14 reg byte a 4.0 @@ -28767,16 +28753,16 @@ FINAL SYMBOL TABLE (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 col zp ZP_BYTE:7 150001.5 -(byte) keyboard_event_scan::col#2 col zp ZP_BYTE:7 28571.714285714286 +(byte) keyboard_event_scan::col#1 reg byte x 150001.5 +(byte) keyboard_event_scan::col#2 reg byte x 28571.714285714286 (byte) keyboard_event_scan::event_type (byte) keyboard_event_scan::event_type#0 reg byte a 200002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:8 20002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:8 31538.846153846156 -(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:8 5000.5 -(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:8 10001.0 -(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:8 52500.75 +(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:7 20002.0 +(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:7 31538.846153846156 +(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:7 5000.5 +(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:7 10001.0 +(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:7 52500.75 (byte) keyboard_event_scan::row (byte) keyboard_event_scan::row#1 row zp ZP_BYTE:2 15001.5 (byte) keyboard_event_scan::row#2 row zp ZP_BYTE:2 6000.24 @@ -28785,17 +28771,17 @@ FINAL SYMBOL TABLE (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:9 200002.0 -(byte) keyboard_events_size#100 keyboard_events_size zp ZP_BYTE:9 882.6176470588235 -(byte) keyboard_events_size#110 keyboard_events_size zp ZP_BYTE:9 105.0 -(byte) keyboard_events_size#118 keyboard_events_size zp ZP_BYTE:9 4286.428571428572 -(byte) keyboard_events_size#119 keyboard_events_size zp ZP_BYTE:9 102001.2 -(byte) keyboard_events_size#18 keyboard_events_size zp ZP_BYTE:9 81000.90000000001 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:9 200002.0 -(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:9 6.6923076923076925 -(byte) keyboard_events_size#27 keyboard_events_size zp ZP_BYTE:9 0.3333333333333333 -(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:9 3.0 -(byte) keyboard_events_size#47 keyboard_events_size zp ZP_BYTE:9 65.05882352941177 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:8 200002.0 +(byte) keyboard_events_size#100 keyboard_events_size zp ZP_BYTE:8 882.6176470588235 +(byte) keyboard_events_size#110 keyboard_events_size zp ZP_BYTE:8 105.0 +(byte) keyboard_events_size#118 keyboard_events_size zp ZP_BYTE:8 4286.428571428572 +(byte) keyboard_events_size#119 keyboard_events_size zp ZP_BYTE:8 102001.2 +(byte) keyboard_events_size#18 keyboard_events_size zp ZP_BYTE:8 81000.90000000001 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:8 200002.0 +(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:8 6.6923076923076925 +(byte) keyboard_events_size#27 keyboard_events_size zp ZP_BYTE:8 0.3333333333333333 +(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:8 3.0 +(byte) keyboard_events_size#47 keyboard_events_size zp ZP_BYTE:8 65.05882352941177 (void()) keyboard_init() (label) keyboard_init::@return (byte[8]) keyboard_matrix_col_bitmask @@ -28807,17 +28793,17 @@ FINAL SYMBOL TABLE (byte) keyboard_matrix_read::return#2 reg byte a 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte a 10003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 10003.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f } (byte) keyboard_modifiers -(byte) keyboard_modifiers#18 keyboard_modifiers zp ZP_BYTE:2 0.8 -(byte) keyboard_modifiers#19 keyboard_modifiers zp ZP_BYTE:2 1.6 -(byte) keyboard_modifiers#20 keyboard_modifiers zp ZP_BYTE:2 1.6 -(byte) keyboard_modifiers#21 keyboard_modifiers zp ZP_BYTE:2 0.7272727272727273 -(byte) keyboard_modifiers#3 keyboard_modifiers zp ZP_BYTE:2 4.0 -(byte) keyboard_modifiers#4 keyboard_modifiers zp ZP_BYTE:2 4.0 -(byte) keyboard_modifiers#5 keyboard_modifiers zp ZP_BYTE:2 4.0 +(byte) keyboard_modifiers#18 reg byte x 0.8 +(byte) keyboard_modifiers#19 reg byte x 1.6 +(byte) keyboard_modifiers#20 reg byte x 1.6 +(byte) keyboard_modifiers#21 reg byte x 0.7272727272727273 +(byte) keyboard_modifiers#3 reg byte x 4.0 +(byte) keyboard_modifiers#4 reg byte x 4.0 +(byte) keyboard_modifiers#5 reg byte x 4.0 (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) main() @@ -28933,29 +28919,32 @@ FINAL SYMBOL TABLE (const byte*) render_preset_name::name#8 name#8 = (string) "Chunky 8bpp @" (const byte*) render_preset_name::name#9 name#9 = (string) "Sixs Fred @" -reg byte y [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] -reg byte y [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] +reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] +reg byte x [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] reg byte a [ gfx_mode::vic_control2#2 ] -zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ] +zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ] zp ZP_WORD:3 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#14 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#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 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 gfx_init_plane_fill::$1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ] zp ZP_WORD:5 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 print_cls::$0 bitmap_plot::plotter_y#0 ] -zp ZP_BYTE:7 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ] -reg byte y [ gfx_mode::j#2 gfx_mode::j#1 ] -reg byte y [ gfx_mode::i#2 gfx_mode::i#1 ] +reg byte x [ gfx_mode::cx#2 gfx_mode::cx#1 ] +reg byte x [ gfx_mode::j#2 gfx_mode::j#1 ] +reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -zp ZP_BYTE:8 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 keyboard_event_pressed::row_bits#0 ] -zp ZP_BYTE:9 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] +reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +zp ZP_BYTE:7 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_event_pressed::row_bits#0 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ] +zp ZP_BYTE:8 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] -zp ZP_DWORD:10 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ] -reg byte y [ form_mode::i#2 form_mode::i#1 ] -zp ZP_BYTE:14 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -reg byte x [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] +zp ZP_DWORD:9 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ] +reg byte x [ form_mode::i#2 form_mode::i#1 ] +zp ZP_BYTE:13 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +zp ZP_BYTE:14 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp ZP_BYTE:15 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] +reg byte y [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] reg byte y [ apply_preset::i#2 apply_preset::i#1 ] -reg byte y [ form_control::return#2 ] -reg byte y [ form_set_screen::y#2 form_set_screen::y#1 ] +reg byte x [ form_control::return#2 ] +reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ] zp ZP_WORD:16 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 gfx_init_plane_8bppchunky::$6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] @@ -28981,7 +28970,7 @@ reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] reg byte a [ gfx_mode::$29 ] -reg byte y [ gfx_mode::plane_a_offs#0 ] +reg byte x [ gfx_mode::plane_a_offs#0 ] reg byte a [ gfx_mode::$34 ] reg byte a [ gfx_mode::$36 ] reg byte a [ gfx_mode::$38 ] @@ -28990,7 +28979,7 @@ reg byte a [ gfx_mode::$40 ] reg byte a [ gfx_mode::$41 ] reg byte a [ gfx_mode::$42 ] reg byte a [ gfx_mode::$43 ] -reg byte y [ gfx_mode::plane_b_offs#0 ] +reg byte x [ gfx_mode::plane_b_offs#0 ] reg byte a [ gfx_mode::$48 ] reg byte a [ gfx_mode::$50 ] reg byte a [ gfx_mode::$52 ] @@ -29012,7 +29001,7 @@ reg byte a [ gfx_mode::$81 ] reg byte a [ gfx_mode::$82 ] reg byte a [ keyboard_event_get::return#3 ] reg byte a [ gfx_mode::keyboard_event#0 ] -reg byte a [ keyboard_matrix_read::rowid#0 ] +reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_scan::$14 ] @@ -29033,7 +29022,7 @@ reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ form_control::return#0 ] reg byte a [ form_mode::$36 ] reg byte a [ apply_preset::idx#0 ] -reg byte a [ form_field_ptr::y#0 ] +reg byte x [ form_field_ptr::y#0 ] reg byte a [ form_field_ptr::x#0 ] reg byte a [ form_control::$5 ] reg byte a [ keyboard_event_get::return#4 ] @@ -29083,7 +29072,7 @@ reg byte a [ gfx_init_screen0::$3 ] FINAL ASSEMBLER -Score: 11370488 +Score: 10162501 //SEG0 File Comments // Interactive Explorer for C64DTV Screen Modes @@ -29257,9 +29246,9 @@ Score: 11370488 .label form_vic_bg3_lo = form_fields_val+$23 .label print_char_cursor = 5 .label print_line_cursor = $10 - .label keyboard_events_size = 9 - .label keyboard_modifiers = 2 - .label form_cursor_count = $e + .label keyboard_events_size = 8 + .label form_cursor_count = $d + .label form_field_idx = $e //SEG3 @begin //SEG4 [1] phi from @begin to @68 [phi:@begin->@68] //SEG5 @68 @@ -29290,10 +29279,10 @@ main: { //SEG18 [449] phi from main::@7 to gfx_init [phi:main::@7->gfx_init] jsr gfx_init //SEG19 [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1] - //SEG20 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG20 [11] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta form_field_idx //SEG21 [11] phi (byte) keyboard_events_size#27 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 - txa sta keyboard_events_size //SEG22 [11] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main::@7->main::@1#2] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 @@ -29318,11 +29307,11 @@ main: { //SEG35 gfx_mode // Change graphics mode to show the selected graphics mode gfx_mode: { - .label _31 = $a + .label _31 = 9 .label _33 = 3 .label _35 = 3 .label _37 = 3 - .label _45 = $a + .label _45 = 9 .label _47 = 3 .label _49 = 3 .label _51 = 3 @@ -29332,11 +29321,10 @@ gfx_mode: { .label _65 = 2 .label _66 = 3 .label _68 = 3 - .label plane_a = $a - .label plane_b = $a + .label plane_a = 9 + .label plane_b = 9 .label vic_colors = 3 .label col = 5 - .label cx = 7 .label cy = 2 //SEG36 [16] if(*((const byte*) form_ctrl_line#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@1 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_line @@ -29345,13 +29333,13 @@ gfx_mode: { //SEG37 [17] phi from gfx_mode to gfx_mode::@23 [phi:gfx_mode->gfx_mode::@23] //SEG38 gfx_mode::@23 //SEG39 [18] phi from gfx_mode::@23 to gfx_mode::@1 [phi:gfx_mode::@23->gfx_mode::@1] - //SEG40 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuyy=vbuc1 - ldy #0|DTV_LINEAR + //SEG40 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) DTV_LINEAR#0 [phi:gfx_mode::@23->gfx_mode::@1#0] -- vbuxx=vbuc1 + ldx #0|DTV_LINEAR jmp b1 //SEG41 [18] phi from gfx_mode to gfx_mode::@1 [phi:gfx_mode->gfx_mode::@1] b12: - //SEG42 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuyy=vbuc1 - ldy #0 + //SEG42 [18] phi (byte) gfx_mode::dtv_control#14 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode->gfx_mode::@1#0] -- vbuxx=vbuc1 + ldx #0 //SEG43 gfx_mode::@1 b1: //SEG44 [19] if(*((const byte*) form_ctrl_borof#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@2 -- _deref_pbuc1_eq_0_then_la1 @@ -29359,10 +29347,10 @@ gfx_mode: { cmp #0 beq b2 //SEG45 gfx_mode::@24 - //SEG46 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG46 [20] (byte) gfx_mode::dtv_control#2 ← (byte) gfx_mode::dtv_control#14 | (const byte) DTV_BORDER_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_BORDER_OFF - tay + tax //SEG47 [21] phi from gfx_mode::@1 gfx_mode::@24 to gfx_mode::@2 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2] //SEG48 [21] phi (byte) gfx_mode::dtv_control#15 = (byte) gfx_mode::dtv_control#14 [phi:gfx_mode::@1/gfx_mode::@24->gfx_mode::@2#0] -- register_copy //SEG49 gfx_mode::@2 @@ -29372,10 +29360,10 @@ gfx_mode: { cmp #0 beq b3 //SEG51 gfx_mode::@25 - //SEG52 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG52 [23] (byte) gfx_mode::dtv_control#3 ← (byte) gfx_mode::dtv_control#15 | (const byte) DTV_HIGHCOLOR#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_HIGHCOLOR - tay + tax //SEG53 [24] phi from gfx_mode::@2 gfx_mode::@25 to gfx_mode::@3 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3] //SEG54 [24] phi (byte) gfx_mode::dtv_control#10 = (byte) gfx_mode::dtv_control#15 [phi:gfx_mode::@2/gfx_mode::@25->gfx_mode::@3#0] -- register_copy //SEG55 gfx_mode::@3 @@ -29385,10 +29373,10 @@ gfx_mode: { cmp #0 beq b4 //SEG57 gfx_mode::@26 - //SEG58 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG58 [26] (byte) gfx_mode::dtv_control#4 ← (byte) gfx_mode::dtv_control#10 | (const byte) DTV_OVERSCAN#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_OVERSCAN - tay + tax //SEG59 [27] phi from gfx_mode::@26 gfx_mode::@3 to gfx_mode::@4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4] //SEG60 [27] phi (byte) gfx_mode::dtv_control#11 = (byte) gfx_mode::dtv_control#4 [phi:gfx_mode::@26/gfx_mode::@3->gfx_mode::@4#0] -- register_copy //SEG61 gfx_mode::@4 @@ -29398,10 +29386,10 @@ gfx_mode: { cmp #0 beq b5 //SEG63 gfx_mode::@27 - //SEG64 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG64 [29] (byte) gfx_mode::dtv_control#5 ← (byte) gfx_mode::dtv_control#11 | (const byte) DTV_COLORRAM_OFF#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_COLORRAM_OFF - tay + tax //SEG65 [30] phi from gfx_mode::@27 gfx_mode::@4 to gfx_mode::@5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5] //SEG66 [30] phi (byte) gfx_mode::dtv_control#13 = (byte) gfx_mode::dtv_control#5 [phi:gfx_mode::@27/gfx_mode::@4->gfx_mode::@5#0] -- register_copy //SEG67 gfx_mode::@5 @@ -29411,16 +29399,16 @@ gfx_mode: { cmp #0 beq b6 //SEG69 gfx_mode::@28 - //SEG70 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG70 [32] (byte) gfx_mode::dtv_control#6 ← (byte) gfx_mode::dtv_control#13 | (const byte) DTV_CHUNKY#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #DTV_CHUNKY - tay + tax //SEG71 [33] phi from gfx_mode::@28 gfx_mode::@5 to gfx_mode::@6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6] //SEG72 [33] phi (byte) gfx_mode::dtv_control#12 = (byte) gfx_mode::dtv_control#6 [phi:gfx_mode::@28/gfx_mode::@5->gfx_mode::@6#0] -- register_copy //SEG73 gfx_mode::@6 b6: - //SEG74 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuyy - sty DTV_CONTROL + //SEG74 [34] *((const byte*) DTV_CONTROL#0) ← (byte) gfx_mode::dtv_control#12 -- _deref_pbuc1=vbuxx + stx DTV_CONTROL //SEG75 [35] if(*((const byte*) form_ctrl_ecm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@7 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_ecm cmp #0 @@ -29428,13 +29416,13 @@ gfx_mode: { //SEG76 [36] phi from gfx_mode::@6 to gfx_mode::@29 [phi:gfx_mode::@6->gfx_mode::@29] //SEG77 gfx_mode::@29 //SEG78 [37] phi from gfx_mode::@29 to gfx_mode::@7 [phi:gfx_mode::@29->gfx_mode::@7] - //SEG79 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuyy=vbuc1 - ldy #VIC_DEN|VIC_RSEL|3|VIC_ECM + //SEG79 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3|(const byte) VIC_ECM#0 [phi:gfx_mode::@29->gfx_mode::@7#0] -- vbuxx=vbuc1 + ldx #VIC_DEN|VIC_RSEL|3|VIC_ECM jmp b7 //SEG80 [37] phi from gfx_mode::@6 to gfx_mode::@7 [phi:gfx_mode::@6->gfx_mode::@7] b14: - //SEG81 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuyy=vbuc1 - ldy #VIC_DEN|VIC_RSEL|3 + //SEG81 [37] phi (byte) gfx_mode::vic_control#5 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [phi:gfx_mode::@6->gfx_mode::@7#0] -- vbuxx=vbuc1 + ldx #VIC_DEN|VIC_RSEL|3 //SEG82 gfx_mode::@7 b7: //SEG83 [38] if(*((const byte*) form_ctrl_bmm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@8 -- _deref_pbuc1_eq_0_then_la1 @@ -29442,16 +29430,16 @@ gfx_mode: { cmp #0 beq b8 //SEG84 gfx_mode::@30 - //SEG85 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuyy=vbuyy_bor_vbuc1 - tya + //SEG85 [39] (byte) gfx_mode::vic_control#2 ← (byte) gfx_mode::vic_control#5 | (const byte) VIC_BMM#0 -- vbuxx=vbuxx_bor_vbuc1 + txa ora #VIC_BMM - tay + tax //SEG86 [40] phi from gfx_mode::@30 gfx_mode::@7 to gfx_mode::@8 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8] //SEG87 [40] phi (byte) gfx_mode::vic_control#4 = (byte) gfx_mode::vic_control#2 [phi:gfx_mode::@30/gfx_mode::@7->gfx_mode::@8#0] -- register_copy //SEG88 gfx_mode::@8 b8: - //SEG89 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuyy - sty VIC_CONTROL + //SEG89 [41] *((const byte*) VIC_CONTROL#0) ← (byte) gfx_mode::vic_control#4 -- _deref_pbuc1=vbuxx + stx VIC_CONTROL //SEG90 [42] if(*((const byte*) form_ctrl_mcm#0)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_mode::@9 -- _deref_pbuc1_eq_0_then_la1 lda form_ctrl_mcm cmp #0 @@ -29476,9 +29464,9 @@ gfx_mode: { asl asl asl - //SEG100 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG100 [47] (byte) gfx_mode::plane_a_offs#0 ← (byte~) gfx_mode::$29 | *((const byte*) form_a_start_lo#0) -- vbuxx=vbuaa_bor__deref_pbuc1 ora form_a_start_lo - tay + tax //SEG101 [48] (byte) get_plane::idx#0 ← *((const byte*) form_a_pattern#0) -- vbuaa=_deref_pbuc1 lda form_a_pattern //SEG102 [49] call get_plane @@ -29488,8 +29476,8 @@ gfx_mode: { //SEG105 [50] (dword) get_plane::return#16 ← (dword) get_plane::return#14 //SEG106 gfx_mode::@46 //SEG107 [51] (dword~) gfx_mode::$31 ← (dword) get_plane::return#16 - //SEG108 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuyy - tya + //SEG108 [52] (dword) gfx_mode::plane_a#0 ← (dword~) gfx_mode::$31 + (byte) gfx_mode::plane_a_offs#0 -- vduz1=vduz1_plus_vbuxx + txa clc adc plane_a sta plane_a @@ -29557,9 +29545,9 @@ gfx_mode: { asl asl asl - //SEG126 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuyy=vbuaa_bor__deref_pbuc1 + //SEG126 [70] (byte) gfx_mode::plane_b_offs#0 ← (byte~) gfx_mode::$43 | *((const byte*) form_b_start_lo#0) -- vbuxx=vbuaa_bor__deref_pbuc1 ora form_b_start_lo - tay + tax //SEG127 [71] (byte) get_plane::idx#1 ← *((const byte*) form_b_pattern#0) -- vbuaa=_deref_pbuc1 lda form_b_pattern //SEG128 [72] call get_plane @@ -29569,8 +29557,8 @@ gfx_mode: { //SEG131 [73] (dword) get_plane::return#17 ← (dword) get_plane::return#14 //SEG132 gfx_mode::@47 //SEG133 [74] (dword~) gfx_mode::$45 ← (dword) get_plane::return#17 - //SEG134 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuyy - tya + //SEG134 [75] (dword) gfx_mode::plane_b#0 ← (dword~) gfx_mode::$45 + (byte) gfx_mode::plane_b_offs#0 -- vduz1=vduz1_plus_vbuxx + txa clc adc plane_b sta plane_b @@ -29716,9 +29704,8 @@ gfx_mode: { //SEG188 gfx_mode::@10 b10: //SEG189 [115] phi from gfx_mode::@10 to gfx_mode::@11 [phi:gfx_mode::@10->gfx_mode::@11] - //SEG190 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuz1=vbuc1 - lda #0 - sta cx + //SEG190 [115] phi (byte) gfx_mode::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@10->gfx_mode::@11#0] -- vbuxx=vbuc1 + ldx #0 //SEG191 [115] phi (byte*) gfx_mode::col#2 = (byte*) gfx_mode::col#3 [phi:gfx_mode::@10->gfx_mode::@11#1] -- register_copy //SEG192 [115] phi (byte*) gfx_mode::vic_colors#2 = (byte*) gfx_mode::vic_colors#3 [phi:gfx_mode::@10->gfx_mode::@11#2] -- register_copy //SEG193 [115] phi from gfx_mode::@11 to gfx_mode::@11 [phi:gfx_mode::@11->gfx_mode::@11] @@ -29741,11 +29728,10 @@ gfx_mode: { bne !+ inc vic_colors+1 !: - //SEG201 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuz1=_inc_vbuz1 - inc cx - //SEG202 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto gfx_mode::@11 -- vbuz1_neq_vbuc1_then_la1 - lda cx - cmp #$28 + //SEG201 [119] (byte) gfx_mode::cx#1 ← ++ (byte) gfx_mode::cx#2 -- vbuxx=_inc_vbuxx + inx + //SEG202 [120] if((byte) gfx_mode::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto gfx_mode::@11 -- vbuxx_neq_vbuc1_then_la1 + cpx #$28 bne b11 //SEG203 gfx_mode::@32 //SEG204 [121] (byte) gfx_mode::cy#1 ← ++ (byte) gfx_mode::cy#4 -- vbuz1=_inc_vbuz1 @@ -29805,20 +29791,20 @@ gfx_mode: { cmp #0 beq b18 //SEG221 [137] phi from gfx_mode::@33 to gfx_mode::@13 [phi:gfx_mode::@33->gfx_mode::@13] - //SEG222 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuyy=vbuc1 - ldy #0 + //SEG222 [137] phi (byte) gfx_mode::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@13#0] -- vbuxx=vbuc1 + ldx #0 // DTV Palette - Grey Tones //SEG223 [137] phi from gfx_mode::@13 to gfx_mode::@13 [phi:gfx_mode::@13->gfx_mode::@13] //SEG224 [137] phi (byte) gfx_mode::j#2 = (byte) gfx_mode::j#1 [phi:gfx_mode::@13->gfx_mode::@13#0] -- register_copy //SEG225 gfx_mode::@13 b13: - //SEG226 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuyy=vbuyy - tya - sta DTV_PALETTE,y - //SEG227 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuyy=_inc_vbuyy - iny - //SEG228 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@13 -- vbuyy_neq_vbuc1_then_la1 - cpy #$10 + //SEG226 [138] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::j#2) ← (byte) gfx_mode::j#2 -- pbuc1_derefidx_vbuxx=vbuxx + txa + sta DTV_PALETTE,x + //SEG227 [139] (byte) gfx_mode::j#1 ← ++ (byte) gfx_mode::j#2 -- vbuxx=_inc_vbuxx + inx + //SEG228 [140] if((byte) gfx_mode::j#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@13 -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 bne b13 //SEG229 gfx_mode::@19 b19: @@ -29850,17 +29836,17 @@ gfx_mode: { //SEG246 [150] phi (byte) gfx_mode::i#2 = (byte) gfx_mode::i#1 [phi:gfx_mode::@15->gfx_mode::@15#0] -- register_copy //SEG247 [150] phi from gfx_mode::@33 to gfx_mode::@15 [phi:gfx_mode::@33->gfx_mode::@15] b18: - //SEG248 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuyy=vbuc1 - ldy #0 + //SEG248 [150] phi (byte) gfx_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_mode::@33->gfx_mode::@15#0] -- vbuxx=vbuc1 + ldx #0 //SEG249 gfx_mode::@15 b15: - //SEG250 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy - lda DTV_PALETTE_DEFAULT,y - sta DTV_PALETTE,y - //SEG251 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuyy=_inc_vbuyy - iny - //SEG252 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@15 -- vbuyy_neq_vbuc1_then_la1 - cpy #$10 + //SEG250 [151] *((const byte*) DTV_PALETTE#0 + (byte) gfx_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) gfx_mode::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda DTV_PALETTE_DEFAULT,x + sta DTV_PALETTE,x + //SEG251 [152] (byte) gfx_mode::i#1 ← ++ (byte) gfx_mode::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG252 [153] if((byte) gfx_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto gfx_mode::@15 -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 bne b15 jmp b19 } @@ -29900,9 +29886,8 @@ keyboard_event_get: { // Also stores current status of modifiers in keyboard_modifiers. keyboard_event_scan: { .label row_scan = $12 - .label keycode = 8 + .label keycode = 7 .label row = 2 - .label col = 7 //SEG267 [160] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] //SEG268 [160] phi (byte) keyboard_events_size#118 = (byte) keyboard_events_size#110 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy //SEG269 [160] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 @@ -29916,8 +29901,8 @@ keyboard_event_scan: { //SEG274 [160] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy //SEG275 keyboard_event_scan::@1 b1: - //SEG276 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuaa=vbuz1 - lda row + //SEG276 [161] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + ldx row //SEG277 [162] call keyboard_matrix_read jsr keyboard_matrix_read //SEG278 [163] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 @@ -29962,15 +29947,13 @@ keyboard_event_scan: { //SEG299 [175] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] //SEG300 keyboard_event_scan::@21 //SEG301 [176] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] - //SEG302 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 - lda #0|KEY_MODIFIER_LSHIFT - sta keyboard_modifiers + //SEG302 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0|KEY_MODIFIER_LSHIFT jmp b9 //SEG303 [176] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] b2: - //SEG304 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 - lda #0 - sta keyboard_modifiers + //SEG304 [176] phi (byte) keyboard_modifiers#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0 //SEG305 keyboard_event_scan::@9 b9: //SEG306 [177] call keyboard_event_pressed @@ -29986,10 +29969,10 @@ keyboard_event_scan: { cmp #0 beq b10 //SEG313 keyboard_event_scan::@22 - //SEG314 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 - lda #KEY_MODIFIER_RSHIFT - ora keyboard_modifiers - sta keyboard_modifiers + //SEG314 [181] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#18 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_RSHIFT + tax //SEG315 [182] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] //SEG316 [182] phi (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy //SEG317 keyboard_event_scan::@10 @@ -30007,10 +29990,10 @@ keyboard_event_scan: { cmp #0 beq b11 //SEG325 keyboard_event_scan::@23 - //SEG326 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 - lda #KEY_MODIFIER_CTRL - ora keyboard_modifiers - sta keyboard_modifiers + //SEG326 [187] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#19 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_CTRL + tax //SEG327 [188] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] //SEG328 [188] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy //SEG329 keyboard_event_scan::@11 @@ -30028,10 +30011,10 @@ keyboard_event_scan: { cmp #0 beq breturn //SEG337 keyboard_event_scan::@24 - //SEG338 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz1_bor_vbuc1 - lda #KEY_MODIFIER_COMMODORE - ora keyboard_modifiers - sta keyboard_modifiers + //SEG338 [193] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#20 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_COMMODORE + tax //SEG339 [194] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return] //SEG340 [194] phi (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy //SEG341 keyboard_event_scan::@return @@ -30043,9 +30026,8 @@ keyboard_event_scan: { b6: //SEG344 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#118 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy //SEG345 [196] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG346 [196] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 - lda #0 - sta col + //SEG346 [196] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + ldx #0 //SEG347 [196] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] //SEG348 [196] phi (byte) keyboard_events_size#18 = (byte) keyboard_events_size#119 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy //SEG349 [196] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy @@ -30056,9 +30038,8 @@ keyboard_event_scan: { lda row_scan ldy row eor keyboard_scan_values,y - //SEG353 [198] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1 - ldy col - and keyboard_matrix_col_bitmask,y + //SEG353 [198] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + and keyboard_matrix_col_bitmask,x //SEG354 [199] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 @@ -30068,9 +30049,9 @@ keyboard_event_scan: { cmp #8 beq b5 //SEG357 keyboard_event_scan::@16 - //SEG358 [201] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuz2 - lda row_scan - and keyboard_matrix_col_bitmask,y + //SEG358 [201] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + lda keyboard_matrix_col_bitmask,x + and row_scan //SEG359 [202] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 @@ -30088,11 +30069,10 @@ keyboard_event_scan: { b5: //SEG366 [206] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG367 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 - inc col - //SEG368 [208] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 - lda col - cmp #8 + //SEG367 [207] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + inx + //SEG368 [208] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + cpx #8 bne b4 //SEG369 keyboard_event_scan::@19 //SEG370 [209] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 @@ -30117,10 +30097,10 @@ keyboard_event_scan: { //SEG375 keyboard_event_pressed // Determine if a specific key is currently pressed based on the last keyboard_event_scan() // Returns 0 is not pressed and non-0 if pressed -// keyboard_event_pressed(byte zeropage(7) keycode) +// keyboard_event_pressed(byte zeropage(2) keycode) keyboard_event_pressed: { - .label row_bits = 8 - .label keycode = 7 + .label row_bits = 7 + .label keycode = 2 //SEG376 [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr @@ -30147,11 +30127,10 @@ keyboard_event_pressed: { // Returns the keys pressed on the row as bits according to the C64 key matrix. // Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write // leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader. -// keyboard_matrix_read(byte register(A) rowid) +// keyboard_matrix_read(byte register(X) rowid) keyboard_matrix_read: { - //SEG383 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuaa - tay - lda keyboard_matrix_row_bitmask,y + //SEG383 [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A //SEG384 [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B @@ -30266,7 +30245,7 @@ get_vic_charset: { // Get plane address from a plane index (from the form) // get_plane(byte register(A) idx) get_plane: { - .label return = $a + .label return = 9 //SEG424 [237] if((byte) get_plane::idx#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto get_plane::@return -- vbuaa_eq_0_then_la1 cmp #0 beq b1 @@ -30631,20 +30610,20 @@ form_mode: { lda #0 sta DTV_PLANEA_START_HI //SEG534 [284] phi from form_mode::@29 to form_mode::@1 [phi:form_mode::@29->form_mode::@1] - //SEG535 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuyy=vbuc1 - tay + //SEG535 [284] phi (byte) form_mode::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_mode::@29->form_mode::@1#0] -- vbuxx=vbuc1 + tax // DTV Palette - default //SEG536 [284] phi from form_mode::@1 to form_mode::@1 [phi:form_mode::@1->form_mode::@1] //SEG537 [284] phi (byte) form_mode::i#2 = (byte) form_mode::i#1 [phi:form_mode::@1->form_mode::@1#0] -- register_copy //SEG538 form_mode::@1 b1: - //SEG539 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy - lda DTV_PALETTE_DEFAULT,y - sta DTV_PALETTE,y - //SEG540 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuyy=_inc_vbuyy - iny - //SEG541 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto form_mode::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$10 + //SEG539 [285] *((const byte*) DTV_PALETTE#0 + (byte) form_mode::i#2) ← *((const byte[$10]) DTV_PALETTE_DEFAULT#0 + (byte) form_mode::i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + lda DTV_PALETTE_DEFAULT,x + sta DTV_PALETTE,x + //SEG540 [286] (byte) form_mode::i#1 ← ++ (byte) form_mode::i#2 -- vbuxx=_inc_vbuxx + inx + //SEG541 [287] if((byte) form_mode::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto form_mode::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 bne b1 //SEG542 form_mode::@10 //SEG543 [288] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 @@ -30677,8 +30656,8 @@ form_mode: { //SEG559 form_mode::@7 //SEG560 [294] call form_control jsr form_control - //SEG561 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuyy - tya + //SEG561 [295] (byte) form_control::return#0 ← (byte) form_control::return#2 -- vbuaa=vbuxx + txa //SEG562 form_mode::@30 //SEG563 [296] (byte~) form_mode::$36 ← (byte) form_control::return#0 //SEG564 [297] if((byte~) form_mode::$36==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_mode::@8 -- vbuaa_eq_0_then_la1 @@ -30929,7 +30908,8 @@ form_render_values: { //SEG652 [331] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy //SEG653 form_render_values::@1 b1: - //SEG654 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 + //SEG654 [332] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 -- vbuyy=vbuz1 + ldy idx //SEG655 [333] call form_field_ptr //SEG656 [340] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr] //SEG657 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy @@ -30938,9 +30918,8 @@ form_render_values: { //SEG659 form_render_values::@3 //SEG660 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 //SEG661 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 - ldy idx - lda form_fields_val,y - tay + ldx idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y @@ -30957,22 +30936,18 @@ form_render_values: { //SEG666 form_field_ptr // Get the screen address of a form field // field_idx is the index of the field to get the screen address for -// form_field_ptr(byte zeropage(2) field_idx) +// form_field_ptr(byte register(Y) field_idx) form_field_ptr: { .label return = 3 - .label field_idx = 2 .label _2 = 3 - //SEG667 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 - ldy field_idx - lda form_fields_y,y - //SEG668 [342] (word~) form_field_ptr::$2 ← *((const byte[$19]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[$19]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa - tay - lda form_line_hi,y + //SEG667 [341] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx form_fields_y,y + //SEG668 [342] (word~) form_field_ptr::$2 ← *((const byte[$19]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[$19]) form_line_lo#0 + (byte) form_field_ptr::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + lda form_line_hi,x sta _2+1 - lda form_line_lo,y + lda form_line_lo,x sta _2 - //SEG669 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuz1 - ldy field_idx + //SEG669 [343] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) -- vbuaa=pbuc1_derefidx_vbuyy lda form_fields_x,y //SEG670 [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 -- pbuz1=pbuz1_plus_vbuaa clc @@ -31150,8 +31125,8 @@ apply_preset: { // Returns 0 if space is not pressed, non-0 if space is pressed form_control: { .label field = 3 - //SEG731 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuz1=vbuxx - stx form_field_ptr.field_idx + //SEG731 [364] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#28 -- vbuyy=vbuz1 + ldy form_field_idx //SEG732 [365] call form_field_ptr //SEG733 [340] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr] //SEG734 [340] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy @@ -31213,21 +31188,23 @@ form_control: { //SEG761 [382] *((byte*) form_control::field#0) ← (byte~) form_control::$11 -- _deref_pbuz1=vbuaa // Unblink the cursor sta (field),y - //SEG762 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 - lda #KEY_MODIFIER_SHIFT - and keyboard_modifiers + //SEG762 [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuxx_band_vbuc1 + txa + and #KEY_MODIFIER_SHIFT //SEG763 [384] if((byte~) form_control::$12==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 //SEG764 form_control::@19 - //SEG765 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuxx=_dec_vbuxx - dex - //SEG766 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@37 -- vbuxx_neq_vbuc1_then_la1 - cpx #$ff + //SEG765 [385] (byte) form_field_idx#44 ← -- (byte) form_field_idx#28 -- vbuz1=_dec_vbuz1 + dec form_field_idx + //SEG766 [386] if((byte) form_field_idx#44!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@37 -- vbuz1_neq_vbuc1_then_la1 + lda form_field_idx + cmp #$ff bne b7 //SEG767 [387] phi from form_control::@19 to form_control::@7 [phi:form_control::@19->form_control::@7] - //SEG768 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuxx=vbuc1 - ldx #form_fields_cnt-1 + //SEG768 [387] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@19->form_control::@7#0] -- vbuz1=vbuc1 + lda #form_fields_cnt-1 + sta form_field_idx //SEG769 form_control::@7 b7: //SEG770 [388] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return] @@ -31235,8 +31212,8 @@ form_control: { //SEG772 [388] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1 lda #FORM_CURSOR_BLINK/2 sta form_cursor_count - //SEG773 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuyy=vbuc1 - ldy #0 + //SEG773 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@7->form_control::@return#2] -- vbuxx=vbuc1 + ldx #0 //SEG774 form_control::@return breturn: //SEG775 [389] return @@ -31247,14 +31224,16 @@ form_control: { //SEG779 [387] phi (byte) form_field_idx#32 = (byte) form_field_idx#44 [phi:form_control::@37/form_control::@38->form_control::@7#0] -- register_copy //SEG780 form_control::@5 b5: - //SEG781 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuxx=_inc_vbuxx - inx - //SEG782 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuxx_neq_vbuc1_then_la1 - cpx #form_fields_cnt + //SEG781 [391] (byte) form_field_idx#45 ← ++ (byte) form_field_idx#28 -- vbuz1=_inc_vbuz1 + inc form_field_idx + //SEG782 [392] if((byte) form_field_idx#45!=(const byte) form_fields_cnt#0) goto form_control::@38 -- vbuz1_neq_vbuc1_then_la1 + lda form_field_idx + cmp #form_fields_cnt bne b7 //SEG783 [387] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7] - //SEG784 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuxx=vbuc1 - ldx #0 + //SEG784 [387] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@5->form_control::@7#0] -- vbuz1=vbuc1 + lda #0 + sta form_field_idx jmp b7 //SEG785 [393] phi from form_control::@5 to form_control::@38 [phi:form_control::@5->form_control::@38] //SEG786 form_control::@38 @@ -31264,29 +31243,31 @@ form_control: { cmp #KEY_CRSR_RIGHT bne b9 //SEG789 form_control::@24 - //SEG790 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuz1_band_vbuc1 - lda #KEY_MODIFIER_SHIFT - and keyboard_modifiers + //SEG790 [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 -- vbuaa=vbuxx_band_vbuc1 + txa + and #KEY_MODIFIER_SHIFT //SEG791 [396] if((byte~) form_control::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 //SEG792 form_control::@25 - //SEG793 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx + //SEG793 [397] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1 + ldx form_field_idx dec form_fields_val,x - //SEG794 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@12 -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 - lda form_fields_val,x + //SEG794 [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) $ff) goto form_control::@12 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + ldy form_field_idx + lda form_fields_val,y cmp #$ff bne b12 //SEG795 form_control::@26 - //SEG796 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda form_fields_max,x - sta form_fields_val,x + //SEG796 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + lda form_fields_max,y + sta form_fields_val,y //SEG797 form_control::@12 b12: - //SEG798 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx + //SEG798 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 // Render field value - lda form_fields_val,x - tay + ldx form_field_idx + ldy form_fields_val,x lda print_hextab,y ldy #0 sta (field),y @@ -31294,24 +31275,24 @@ form_control: { b6: //SEG800 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@12/form_control::@39->form_control::@return#0] -- register_copy //SEG801 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@39->form_control::@return#1] -- register_copy - //SEG802 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuyy=vbuc1 - ldy #0 + //SEG802 [388] phi (byte) form_control::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@12/form_control::@39->form_control::@return#2] -- vbuxx=vbuc1 + ldx #0 jmp breturn //SEG803 form_control::@10 b10: - //SEG804 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuxx=_inc_pbuc1_derefidx_vbuxx + //SEG804 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1 + ldx form_field_idx inc form_fields_val,x - //SEG805 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuxx_le_pbuc2_derefidx_vbuxx_then_la1 - txa - tay - lda form_fields_val,x + //SEG805 [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1 + ldy form_field_idx + lda form_fields_val,y cmp form_fields_max,y bcc b12 beq b12 //SEG806 form_control::@28 - //SEG807 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG807 [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 - sta form_fields_val,x + sta form_fields_val,y jmp b12 //SEG808 form_control::@9 b9: @@ -31321,8 +31302,8 @@ form_control: { //SEG810 [388] phi from form_control::@9 to form_control::@return [phi:form_control::@9->form_control::@return] //SEG811 [388] phi (byte) form_field_idx#18 = (byte) form_field_idx#28 [phi:form_control::@9->form_control::@return#0] -- register_copy //SEG812 [388] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@9->form_control::@return#1] -- register_copy - //SEG813 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:form_control::@9->form_control::@return#2] -- vbuyy=vbuc1 - ldy #$ff + //SEG813 [388] phi (byte) form_control::return#2 = (byte/word/signed word/dword/signed dword) $ff [phi:form_control::@9->form_control::@return#2] -- vbuxx=vbuc1 + ldx #$ff jmp breturn //SEG814 [405] phi from form_control::@9 to form_control::@39 [phi:form_control::@9->form_control::@39] //SEG815 form_control::@39 @@ -31346,8 +31327,8 @@ form_control: { form_set_screen: { .label line = 3 //SEG824 [410] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1] - //SEG825 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuyy=vbuc1 - ldy #0 + //SEG825 [410] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuxx=vbuc1 + ldx #0 //SEG826 [410] phi (byte*) form_set_screen::line#2 = (const byte*) FORM_SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1 lda # (byte*) form_set_screen::line#2 -- vbuaa=_hi_pbuz1 lda line+1 - //SEG834 [414] *((const byte[$19]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuyy=vbuaa - sta form_line_hi,y + //SEG834 [414] *((const byte[$19]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 -- pbuc1_derefidx_vbuxx=vbuaa + sta form_line_hi,x //SEG835 [415] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc @@ -31374,10 +31355,10 @@ form_set_screen: { bcc !+ inc line+1 !: - //SEG836 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuyy=_inc_vbuyy - iny - //SEG837 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto form_set_screen::@1 -- vbuyy_neq_vbuc1_then_la1 - cpy #$19 + //SEG836 [416] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 -- vbuxx=_inc_vbuxx + inx + //SEG837 [417] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) $19) goto form_set_screen::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$19 bne b1 //SEG838 form_set_screen::@return //SEG839 [418] return @@ -31634,7 +31615,7 @@ gfx_init_plane_full: { } //SEG958 gfx_init_plane_fill // Initialize 320*200 1bpp pixel ($2000) plane with identical bytes -// gfx_init_plane_fill(dword zeropage($a) plane_addr, byte zeropage(2) fill) +// gfx_init_plane_fill(dword zeropage(9) plane_addr, byte zeropage(2) fill) gfx_init_plane_fill: { .label _0 = $13 .label _1 = 3 @@ -31643,7 +31624,7 @@ gfx_init_plane_fill: { .label _6 = 3 .label gfxb = 3 .label by = 7 - .label plane_addr = $a + .label plane_addr = 9 .label fill = 2 //SEG959 [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte/signed byte/word/signed word/dword/signed dword) 2 -- vduz1=vduz2_rol_2 lda plane_addr @@ -32048,7 +32029,7 @@ gfx_init_plane_charset8: { .label bits = 8 .label chargen = 3 .label gfxa = 5 - .label col = 9 + .label col = $d .label cr = 7 .label ch = 2 //SEG1127 [562] call dtvSetCpuBankSegment1 @@ -32349,10 +32330,10 @@ gfx_init_vic_bitmap: { } //SEG1269 bitmap_line // Draw a line on the bitmap -// bitmap_line(byte zeropage(9) x0, byte register(X) x1, byte zeropage($f) y0, byte zeropage($12) y1) +// bitmap_line(byte zeropage($d) x0, byte register(X) x1, byte zeropage($f) y0, byte zeropage($12) y1) bitmap_line: { .label xd = 8 - .label x0 = 9 + .label x0 = $d .label y0 = $f .label y1 = $12 //SEG1270 [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuxx_then_la1 @@ -32582,11 +32563,11 @@ bitmap_line: { jmp breturn } //SEG1395 bitmap_line_xdyi -// bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) +// bitmap_line_xdyi(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyi: { .label x = $e .label y = $f - .label x1 = 9 + .label x1 = $d .label xd = 8 .label yd = 7 .label e = $12 @@ -32685,7 +32666,7 @@ bitmap_line_ydxi: { .label y1 = $12 .label yd = 7 .label xd = 8 - .label e = 9 + .label e = $d //SEG1432 [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr @@ -32741,11 +32722,11 @@ bitmap_line_ydxi: { rts } //SEG1459 bitmap_line_xdyd -// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage(9) x1, byte zeropage(8) xd, byte zeropage(7) yd) +// bitmap_line_xdyd(byte zeropage($e) x, byte zeropage($f) y, byte zeropage($d) x1, byte zeropage(8) xd, byte zeropage(7) yd) bitmap_line_xdyd: { .label x = $e .label y = $f - .label x1 = 9 + .label x1 = $d .label xd = 8 .label yd = 7 .label e = $12 @@ -32810,7 +32791,7 @@ bitmap_line_ydxd: { .label y1 = $f .label yd = 7 .label xd = 8 - .label e = 9 + .label e = $d //SEG1488 [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr diff --git a/src/test/ref/c64dtv-gfxexplorer.sym b/src/test/ref/c64dtv-gfxexplorer.sym index 5e31f982e..f86d62675 100644 --- a/src/test/ref/c64dtv-gfxexplorer.sym +++ b/src/test/ref/c64dtv-gfxexplorer.sym @@ -437,7 +437,7 @@ (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 -(byte) bitmap_line::x0#0 x0 zp ZP_BYTE:9 1.260869565217391 +(byte) bitmap_line::x0#0 x0 zp ZP_BYTE:13 1.260869565217391 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 reg byte x 1.3181818181818181 (byte) bitmap_line::xd @@ -472,9 +472,9 @@ (byte) bitmap_line_xdyd::x#3 x zp ZP_BYTE:14 76.25 (byte) bitmap_line_xdyd::x#6 x zp ZP_BYTE:14 3.0 (byte) bitmap_line_xdyd::x1 -(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:9 7.5 +(byte) bitmap_line_xdyd::x1#0 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyd::x1#1 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyd::x1#6 x1 zp ZP_BYTE:13 7.5 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 xd zp ZP_BYTE:8 2.0 (byte) bitmap_line_xdyd::xd#1 xd zp ZP_BYTE:8 2.0 @@ -510,9 +510,9 @@ (byte) bitmap_line_xdyi::x#3 x zp ZP_BYTE:14 76.25 (byte) bitmap_line_xdyi::x#6 x zp ZP_BYTE:14 3.0 (byte) bitmap_line_xdyi::x1 -(byte) bitmap_line_xdyi::x1#0 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#1 x1 zp ZP_BYTE:9 1.3333333333333333 -(byte) bitmap_line_xdyi::x1#6 x1 zp ZP_BYTE:9 7.5 +(byte) bitmap_line_xdyi::x1#0 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyi::x1#1 x1 zp ZP_BYTE:13 1.3333333333333333 +(byte) bitmap_line_xdyi::x1#6 x1 zp ZP_BYTE:13 7.5 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#0 xd zp ZP_BYTE:8 2.0 (byte) bitmap_line_xdyi::xd#1 xd zp ZP_BYTE:8 2.0 @@ -536,11 +536,11 @@ (label) bitmap_line_ydxd::@5 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e -(byte) bitmap_line_ydxd::e#0 e zp ZP_BYTE:9 4.0 -(byte) bitmap_line_ydxd::e#1 e zp ZP_BYTE:9 134.66666666666666 -(byte) bitmap_line_ydxd::e#2 e zp ZP_BYTE:9 202.0 -(byte) bitmap_line_ydxd::e#3 e zp ZP_BYTE:9 40.8 -(byte) bitmap_line_ydxd::e#6 e zp ZP_BYTE:9 101.0 +(byte) bitmap_line_ydxd::e#0 e zp ZP_BYTE:13 4.0 +(byte) bitmap_line_ydxd::e#1 e zp ZP_BYTE:13 134.66666666666666 +(byte) bitmap_line_ydxd::e#2 e zp ZP_BYTE:13 202.0 +(byte) bitmap_line_ydxd::e#3 e zp ZP_BYTE:13 40.8 +(byte) bitmap_line_ydxd::e#6 e zp ZP_BYTE:13 101.0 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#0 reg byte x 1.0 (byte) bitmap_line_ydxd::x#1 reg byte x 1.0 @@ -574,11 +574,11 @@ (label) bitmap_line_ydxi::@5 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e -(byte) bitmap_line_ydxi::e#0 e zp ZP_BYTE:9 4.0 -(byte) bitmap_line_ydxi::e#1 e zp ZP_BYTE:9 134.66666666666666 -(byte) bitmap_line_ydxi::e#2 e zp ZP_BYTE:9 202.0 -(byte) bitmap_line_ydxi::e#3 e zp ZP_BYTE:9 40.8 -(byte) bitmap_line_ydxi::e#6 e zp ZP_BYTE:9 101.0 +(byte) bitmap_line_ydxi::e#0 e zp ZP_BYTE:13 4.0 +(byte) bitmap_line_ydxi::e#1 e zp ZP_BYTE:13 134.66666666666666 +(byte) bitmap_line_ydxi::e#2 e zp ZP_BYTE:13 202.0 +(byte) bitmap_line_ydxi::e#3 e zp ZP_BYTE:13 40.8 +(byte) bitmap_line_ydxi::e#6 e zp ZP_BYTE:13 101.0 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#0 reg byte x 1.0 (byte) bitmap_line_ydxi::x#1 reg byte x 1.0 @@ -707,7 +707,7 @@ (byte) form_control::key_event#0 reg byte a 2.6666666666666665 (byte) form_control::return (byte) form_control::return#0 reg byte a 2002.0 -(byte) form_control::return#2 reg byte y 333.6666666666667 +(byte) form_control::return#2 reg byte x 333.6666666666667 (byte*) form_ctrl_bmm (const byte*) form_ctrl_bmm#0 form_ctrl_bmm = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) form_ctrl_borof @@ -727,28 +727,28 @@ (byte*) form_ctrl_overs (const byte*) form_ctrl_overs#0 form_ctrl_overs = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 9 (signed byte) form_cursor_count -(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:14 0.3333333333333333 -(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:14 0.4 -(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:14 65.82352941176472 -(signed byte) form_cursor_count#21 form_cursor_count zp ZP_BYTE:14 158.0 -(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:14 2.0 +(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:13 0.3333333333333333 +(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:13 0.4 +(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:13 65.82352941176472 +(signed byte) form_cursor_count#21 form_cursor_count zp ZP_BYTE:13 158.0 +(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:13 2.0 (byte*) form_dtv_palet (const byte*) form_dtv_palet#0 form_dtv_palet = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) $1b (byte) form_field_idx -(byte) form_field_idx#1 reg byte x 0.3333333333333333 -(byte) form_field_idx#18 reg byte x 65.94117647058826 -(byte) form_field_idx#28 reg byte x 29.17948717948718 -(byte) form_field_idx#32 reg byte x 6.0 -(byte) form_field_idx#44 reg byte x 2.0 -(byte) form_field_idx#45 reg byte x 2.0 +(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:14 0.3333333333333333 +(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:14 65.94117647058826 +(byte) form_field_idx#28 form_field_idx zp ZP_BYTE:14 29.17948717948718 +(byte) form_field_idx#32 form_field_idx zp ZP_BYTE:14 6.0 +(byte) form_field_idx#44 form_field_idx zp ZP_BYTE:14 2.0 +(byte) form_field_idx#45 form_field_idx zp ZP_BYTE:14 2.0 (byte*()) form_field_ptr((byte) form_field_ptr::field_idx) (word~) form_field_ptr::$2 $2 zp ZP_WORD:3 1.0 (label) form_field_ptr::@return (byte*) form_field_ptr::field (byte) form_field_ptr::field_idx -(byte) form_field_ptr::field_idx#0 field_idx zp ZP_BYTE:2 2002.0 -(byte) form_field_ptr::field_idx#1 field_idx zp ZP_BYTE:2 4.0 -(byte) form_field_ptr::field_idx#2 field_idx zp ZP_BYTE:2 335.66666666666674 +(byte) form_field_ptr::field_idx#0 reg byte y 2002.0 +(byte) form_field_ptr::field_idx#1 reg byte y 4.0 +(byte) form_field_ptr::field_idx#2 reg byte y 335.66666666666674 (byte*) form_field_ptr::line (byte*) form_field_ptr::return (byte*) form_field_ptr::return#0 return zp ZP_WORD:3 251.25 @@ -757,7 +757,7 @@ (byte) form_field_ptr::x (byte) form_field_ptr::x#0 reg byte a 4.0 (byte) form_field_ptr::y -(byte) form_field_ptr::y#0 reg byte a 6.0 +(byte) form_field_ptr::y#0 reg byte x 6.0 (byte) form_fields_cnt (const byte) form_fields_cnt#0 form_fields_cnt = (byte/signed byte/word/signed word/dword/signed dword) $24 (byte[]) form_fields_max @@ -795,8 +795,8 @@ (label) form_mode::@8 (label) form_mode::@return (byte) form_mode::i -(byte) form_mode::i#1 reg byte y 151.5 -(byte) form_mode::i#2 reg byte y 202.0 +(byte) form_mode::i#1 reg byte x 151.5 +(byte) form_mode::i#2 reg byte x 202.0 (byte) form_mode::preset_current (byte) form_mode::preset_current#0 preset_current zp ZP_BYTE:15 4.0 (byte) form_mode::preset_current#1 preset_current zp ZP_BYTE:15 50.5 @@ -821,8 +821,8 @@ (byte*) form_set_screen::line#2 line zp ZP_WORD:3 80.8 (byte*) form_set_screen::screen (byte) form_set_screen::y -(byte) form_set_screen::y#1 reg byte y 151.5 -(byte) form_set_screen::y#2 reg byte y 67.33333333333333 +(byte) form_set_screen::y#1 reg byte x 151.5 +(byte) form_set_screen::y#2 reg byte x 67.33333333333333 (byte*) form_vic_bg0_hi (const byte*) form_vic_bg0_hi#0 form_vic_bg0_hi = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) $1c (byte*) form_vic_bg0_lo @@ -866,9 +866,9 @@ (byte) get_plane::idx#1 reg byte a 4.0 (byte) get_plane::idx#10 reg byte a 2.285714285714285 (dword) get_plane::return -(dword) get_plane::return#14 return zp ZP_DWORD:10 1.0 -(dword) get_plane::return#16 return zp ZP_DWORD:10 4.0 -(dword) get_plane::return#17 return zp ZP_DWORD:10 4.0 +(dword) get_plane::return#14 return zp ZP_DWORD:9 1.0 +(dword) get_plane::return#16 return zp ZP_DWORD:9 4.0 +(dword) get_plane::return#17 return zp ZP_DWORD:9 4.0 (byte*()) get_vic_charset((byte) get_vic_charset::idx) (label) get_vic_charset::@3 (label) get_vic_charset::@4 @@ -986,10 +986,10 @@ (byte*) gfx_init_plane_charset8::chargen#2 chargen zp ZP_WORD:3 157.0 (byte*) gfx_init_plane_charset8::chargen#3 chargen zp ZP_WORD:3 22.0 (byte) gfx_init_plane_charset8::col -(byte) gfx_init_plane_charset8::col#1 col zp ZP_BYTE:9 302.0 -(byte) gfx_init_plane_charset8::col#2 col zp ZP_BYTE:9 388.0 -(byte) gfx_init_plane_charset8::col#5 col zp ZP_BYTE:9 71.0 -(byte) gfx_init_plane_charset8::col#6 col zp ZP_BYTE:9 22.0 +(byte) gfx_init_plane_charset8::col#1 col zp ZP_BYTE:13 302.0 +(byte) gfx_init_plane_charset8::col#2 col zp ZP_BYTE:13 388.0 +(byte) gfx_init_plane_charset8::col#5 col zp ZP_BYTE:13 71.0 +(byte) gfx_init_plane_charset8::col#6 col zp ZP_BYTE:13 22.0 (byte) gfx_init_plane_charset8::cp (byte) gfx_init_plane_charset8::cp#1 reg byte x 1501.5 (byte) gfx_init_plane_charset8::cp#2 reg byte x 222.44444444444446 @@ -1032,7 +1032,7 @@ (byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte x 2.0 (byte) gfx_init_plane_fill::gfxbCpuBank#1 reg byte x 20.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.5714285714285714 +(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:9 0.5714285714285714 (void()) gfx_init_plane_full() (label) gfx_init_plane_full::@return (void()) gfx_init_plane_horisontal() @@ -1210,7 +1210,7 @@ (const byte[]) gfx_init_vic_bitmap::lines_y#0 lines_y = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/word/signed word/dword/signed dword) $c7, (byte/word/signed word/dword/signed dword) $c7, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $64, (byte/word/signed word/dword/signed dword) $c7, (byte/signed byte/word/signed word/dword/signed dword) $64, (byte/signed byte/word/signed word/dword/signed dword) 0 } (void()) gfx_mode() (byte~) gfx_mode::$29 reg byte a 4.0 -(dword~) gfx_mode::$31 $31 zp ZP_DWORD:10 4.0 +(dword~) gfx_mode::$31 $31 zp ZP_DWORD:9 4.0 (word~) gfx_mode::$33 $33 zp ZP_WORD:3 4.0 (byte~) gfx_mode::$34 reg byte a 4.0 (word~) gfx_mode::$35 $35 zp ZP_WORD:3 4.0 @@ -1222,7 +1222,7 @@ (byte~) gfx_mode::$41 reg byte a 4.0 (byte~) gfx_mode::$42 reg byte a 4.0 (byte~) gfx_mode::$43 reg byte a 4.0 -(dword~) gfx_mode::$45 $45 zp ZP_DWORD:10 4.0 +(dword~) gfx_mode::$45 $45 zp ZP_DWORD:9 4.0 (word~) gfx_mode::$47 $47 zp ZP_WORD:3 4.0 (byte~) gfx_mode::$48 reg byte a 4.0 (word~) gfx_mode::$49 $49 zp ZP_WORD:3 4.0 @@ -1289,48 +1289,48 @@ (byte*) gfx_mode::col#2 col zp ZP_WORD:5 1552.0 (byte*) gfx_mode::col#3 col zp ZP_WORD:5 202.0 (byte) gfx_mode::cx -(byte) gfx_mode::cx#1 cx zp ZP_BYTE:7 1501.5 -(byte) gfx_mode::cx#2 cx zp ZP_BYTE:7 500.5 +(byte) gfx_mode::cx#1 reg byte x 1501.5 +(byte) gfx_mode::cx#2 reg byte x 500.5 (byte) gfx_mode::cy (byte) gfx_mode::cy#1 cy zp ZP_BYTE:2 151.5 (byte) gfx_mode::cy#4 cy zp ZP_BYTE:2 28.857142857142858 (byte) gfx_mode::dtv_control -(byte) gfx_mode::dtv_control#10 reg byte y 4.0 -(byte) gfx_mode::dtv_control#11 reg byte y 4.0 -(byte) gfx_mode::dtv_control#12 reg byte y 6.0 -(byte) gfx_mode::dtv_control#13 reg byte y 4.0 -(byte) gfx_mode::dtv_control#14 reg byte y 2.0 -(byte) gfx_mode::dtv_control#15 reg byte y 4.0 -(byte) gfx_mode::dtv_control#2 reg byte y 4.0 -(byte) gfx_mode::dtv_control#3 reg byte y 4.0 -(byte) gfx_mode::dtv_control#4 reg byte y 4.0 -(byte) gfx_mode::dtv_control#5 reg byte y 4.0 -(byte) gfx_mode::dtv_control#6 reg byte y 4.0 +(byte) gfx_mode::dtv_control#10 reg byte x 4.0 +(byte) gfx_mode::dtv_control#11 reg byte x 4.0 +(byte) gfx_mode::dtv_control#12 reg byte x 6.0 +(byte) gfx_mode::dtv_control#13 reg byte x 4.0 +(byte) gfx_mode::dtv_control#14 reg byte x 2.0 +(byte) gfx_mode::dtv_control#15 reg byte x 4.0 +(byte) gfx_mode::dtv_control#2 reg byte x 4.0 +(byte) gfx_mode::dtv_control#3 reg byte x 4.0 +(byte) gfx_mode::dtv_control#4 reg byte x 4.0 +(byte) gfx_mode::dtv_control#5 reg byte x 4.0 +(byte) gfx_mode::dtv_control#6 reg byte x 4.0 (byte) gfx_mode::i -(byte) gfx_mode::i#1 reg byte y 151.5 -(byte) gfx_mode::i#2 reg byte y 202.0 +(byte) gfx_mode::i#1 reg byte x 151.5 +(byte) gfx_mode::i#2 reg byte x 202.0 (byte) gfx_mode::j -(byte) gfx_mode::j#1 reg byte y 151.5 -(byte) gfx_mode::j#2 reg byte y 202.0 +(byte) gfx_mode::j#1 reg byte x 151.5 +(byte) gfx_mode::j#2 reg byte x 202.0 (byte) gfx_mode::keyboard_event (byte) gfx_mode::keyboard_event#0 reg byte a 202.0 (dword) gfx_mode::plane_a -(dword) gfx_mode::plane_a#0 plane_a zp ZP_DWORD:10 1.1428571428571428 +(dword) gfx_mode::plane_a#0 plane_a zp ZP_DWORD:9 1.1428571428571428 (byte) gfx_mode::plane_a_offs -(byte) gfx_mode::plane_a_offs#0 reg byte y 0.8 +(byte) gfx_mode::plane_a_offs#0 reg byte x 0.8 (dword) gfx_mode::plane_b -(dword) gfx_mode::plane_b#0 plane_b zp ZP_DWORD:10 1.1428571428571428 +(dword) gfx_mode::plane_b#0 plane_b zp ZP_DWORD:9 1.1428571428571428 (byte) gfx_mode::plane_b_offs -(byte) gfx_mode::plane_b_offs#0 reg byte y 0.8 +(byte) gfx_mode::plane_b_offs#0 reg byte x 0.8 (byte*) gfx_mode::vic_colors (byte*) gfx_mode::vic_colors#0 vic_colors zp ZP_WORD:3 4.0 (byte*) gfx_mode::vic_colors#1 vic_colors zp ZP_WORD:3 420.59999999999997 (byte*) gfx_mode::vic_colors#2 vic_colors zp ZP_WORD:3 1034.6666666666667 (byte*) gfx_mode::vic_colors#3 vic_colors zp ZP_WORD:3 204.0 (byte) gfx_mode::vic_control -(byte) gfx_mode::vic_control#2 reg byte y 4.0 -(byte) gfx_mode::vic_control#4 reg byte y 6.0 -(byte) gfx_mode::vic_control#5 reg byte y 2.0 +(byte) gfx_mode::vic_control#2 reg byte x 4.0 +(byte) gfx_mode::vic_control#4 reg byte x 6.0 +(byte) gfx_mode::vic_control#5 reg byte x 2.0 (byte) gfx_mode::vic_control2 (byte) gfx_mode::vic_control2#2 reg byte a 2.0 (byte[]) keyboard_char_keycodes @@ -1347,7 +1347,7 @@ (byte~) keyboard_event_pressed::$1 reg byte a 4.0 (label) keyboard_event_pressed::@return (byte) keyboard_event_pressed::keycode -(byte) keyboard_event_pressed::keycode#4 keycode zp ZP_BYTE:7 1.3333333333333333 +(byte) keyboard_event_pressed::keycode#4 keycode zp ZP_BYTE:2 1.3333333333333333 (byte) keyboard_event_pressed::return (byte) keyboard_event_pressed::return#0 reg byte a 4.0 (byte) keyboard_event_pressed::return#1 reg byte a 4.0 @@ -1355,7 +1355,7 @@ (byte) keyboard_event_pressed::return#2 reg byte a 4.0 (byte) keyboard_event_pressed::return#3 reg byte a 4.0 (byte) keyboard_event_pressed::row_bits -(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:8 2.0 +(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:7 2.0 (void()) keyboard_event_scan() (byte/word/dword~) keyboard_event_scan::$11 reg byte a 200002.0 (byte~) keyboard_event_scan::$14 reg byte a 4.0 @@ -1389,16 +1389,16 @@ (label) keyboard_event_scan::@9 (label) keyboard_event_scan::@return (byte) keyboard_event_scan::col -(byte) keyboard_event_scan::col#1 col zp ZP_BYTE:7 150001.5 -(byte) keyboard_event_scan::col#2 col zp ZP_BYTE:7 28571.714285714286 +(byte) keyboard_event_scan::col#1 reg byte x 150001.5 +(byte) keyboard_event_scan::col#2 reg byte x 28571.714285714286 (byte) keyboard_event_scan::event_type (byte) keyboard_event_scan::event_type#0 reg byte a 200002.0 (byte) keyboard_event_scan::keycode -(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:8 20002.0 -(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:8 31538.846153846156 -(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:8 5000.5 -(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:8 10001.0 -(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:8 52500.75 +(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:7 20002.0 +(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:7 31538.846153846156 +(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:7 5000.5 +(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:7 10001.0 +(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:7 52500.75 (byte) keyboard_event_scan::row (byte) keyboard_event_scan::row#1 row zp ZP_BYTE:2 15001.5 (byte) keyboard_event_scan::row#2 row zp ZP_BYTE:2 6000.24 @@ -1407,17 +1407,17 @@ (byte[8]) keyboard_events (const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) } (byte) keyboard_events_size -(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:9 200002.0 -(byte) keyboard_events_size#100 keyboard_events_size zp ZP_BYTE:9 882.6176470588235 -(byte) keyboard_events_size#110 keyboard_events_size zp ZP_BYTE:9 105.0 -(byte) keyboard_events_size#118 keyboard_events_size zp ZP_BYTE:9 4286.428571428572 -(byte) keyboard_events_size#119 keyboard_events_size zp ZP_BYTE:9 102001.2 -(byte) keyboard_events_size#18 keyboard_events_size zp ZP_BYTE:9 81000.90000000001 -(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:9 200002.0 -(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:9 6.6923076923076925 -(byte) keyboard_events_size#27 keyboard_events_size zp ZP_BYTE:9 0.3333333333333333 -(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:9 3.0 -(byte) keyboard_events_size#47 keyboard_events_size zp ZP_BYTE:9 65.05882352941177 +(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:8 200002.0 +(byte) keyboard_events_size#100 keyboard_events_size zp ZP_BYTE:8 882.6176470588235 +(byte) keyboard_events_size#110 keyboard_events_size zp ZP_BYTE:8 105.0 +(byte) keyboard_events_size#118 keyboard_events_size zp ZP_BYTE:8 4286.428571428572 +(byte) keyboard_events_size#119 keyboard_events_size zp ZP_BYTE:8 102001.2 +(byte) keyboard_events_size#18 keyboard_events_size zp ZP_BYTE:8 81000.90000000001 +(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:8 200002.0 +(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:8 6.6923076923076925 +(byte) keyboard_events_size#27 keyboard_events_size zp ZP_BYTE:8 0.3333333333333333 +(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:8 3.0 +(byte) keyboard_events_size#47 keyboard_events_size zp ZP_BYTE:8 65.05882352941177 (void()) keyboard_init() (label) keyboard_init::@return (byte[8]) keyboard_matrix_col_bitmask @@ -1429,17 +1429,17 @@ (byte) keyboard_matrix_read::return#2 reg byte a 20002.0 (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid -(byte) keyboard_matrix_read::rowid#0 reg byte a 10003.0 +(byte) keyboard_matrix_read::rowid#0 reg byte x 10003.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f } (byte) keyboard_modifiers -(byte) keyboard_modifiers#18 keyboard_modifiers zp ZP_BYTE:2 0.8 -(byte) keyboard_modifiers#19 keyboard_modifiers zp ZP_BYTE:2 1.6 -(byte) keyboard_modifiers#20 keyboard_modifiers zp ZP_BYTE:2 1.6 -(byte) keyboard_modifiers#21 keyboard_modifiers zp ZP_BYTE:2 0.7272727272727273 -(byte) keyboard_modifiers#3 keyboard_modifiers zp ZP_BYTE:2 4.0 -(byte) keyboard_modifiers#4 keyboard_modifiers zp ZP_BYTE:2 4.0 -(byte) keyboard_modifiers#5 keyboard_modifiers zp ZP_BYTE:2 4.0 +(byte) keyboard_modifiers#18 reg byte x 0.8 +(byte) keyboard_modifiers#19 reg byte x 1.6 +(byte) keyboard_modifiers#20 reg byte x 1.6 +(byte) keyboard_modifiers#21 reg byte x 0.7272727272727273 +(byte) keyboard_modifiers#3 reg byte x 4.0 +(byte) keyboard_modifiers#4 reg byte x 4.0 +(byte) keyboard_modifiers#5 reg byte x 4.0 (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) main() @@ -1555,29 +1555,32 @@ (const byte*) render_preset_name::name#8 name#8 = (string) "Chunky 8bpp @" (const byte*) render_preset_name::name#9 name#9 = (string) "Sixs Fred @" -reg byte y [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] -reg byte y [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] +reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] +reg byte x [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] reg byte a [ gfx_mode::vic_control2#2 ] -zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ] +zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 form_render_values::idx#2 form_render_values::idx#1 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ] zp ZP_WORD:3 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#14 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#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 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 gfx_init_plane_fill::$1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ] zp ZP_WORD:5 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 print_cls::$0 bitmap_plot::plotter_y#0 ] -zp ZP_BYTE:7 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ] -reg byte y [ gfx_mode::j#2 gfx_mode::j#1 ] -reg byte y [ gfx_mode::i#2 gfx_mode::i#1 ] +reg byte x [ gfx_mode::cx#2 gfx_mode::cx#1 ] +reg byte x [ gfx_mode::j#2 gfx_mode::j#1 ] +reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -zp ZP_BYTE:8 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 keyboard_event_pressed::row_bits#0 ] -zp ZP_BYTE:9 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] +reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +zp ZP_BYTE:7 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_event_pressed::row_bits#0 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ] +zp ZP_BYTE:8 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] -zp ZP_DWORD:10 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ] -reg byte y [ form_mode::i#2 form_mode::i#1 ] -zp ZP_BYTE:14 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -reg byte x [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] +zp ZP_DWORD:9 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ] +reg byte x [ form_mode::i#2 form_mode::i#1 ] +zp ZP_BYTE:13 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +zp ZP_BYTE:14 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp ZP_BYTE:15 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] +reg byte y [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] reg byte y [ apply_preset::i#2 apply_preset::i#1 ] -reg byte y [ form_control::return#2 ] -reg byte y [ form_set_screen::y#2 form_set_screen::y#1 ] +reg byte x [ form_control::return#2 ] +reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ] zp ZP_WORD:16 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 gfx_init_plane_8bppchunky::$6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] @@ -1603,7 +1606,7 @@ reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] reg byte a [ gfx_mode::$29 ] -reg byte y [ gfx_mode::plane_a_offs#0 ] +reg byte x [ gfx_mode::plane_a_offs#0 ] reg byte a [ gfx_mode::$34 ] reg byte a [ gfx_mode::$36 ] reg byte a [ gfx_mode::$38 ] @@ -1612,7 +1615,7 @@ reg byte a [ gfx_mode::$40 ] reg byte a [ gfx_mode::$41 ] reg byte a [ gfx_mode::$42 ] reg byte a [ gfx_mode::$43 ] -reg byte y [ gfx_mode::plane_b_offs#0 ] +reg byte x [ gfx_mode::plane_b_offs#0 ] reg byte a [ gfx_mode::$48 ] reg byte a [ gfx_mode::$50 ] reg byte a [ gfx_mode::$52 ] @@ -1634,7 +1637,7 @@ reg byte a [ gfx_mode::$81 ] reg byte a [ gfx_mode::$82 ] reg byte a [ keyboard_event_get::return#3 ] reg byte a [ gfx_mode::keyboard_event#0 ] -reg byte a [ keyboard_matrix_read::rowid#0 ] +reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_scan::$14 ] @@ -1655,7 +1658,7 @@ reg byte a [ keyboard_matrix_read::return#0 ] reg byte a [ form_control::return#0 ] reg byte a [ form_mode::$36 ] reg byte a [ apply_preset::idx#0 ] -reg byte a [ form_field_ptr::y#0 ] +reg byte x [ form_field_ptr::y#0 ] reg byte a [ form_field_ptr::x#0 ] reg byte a [ form_control::$5 ] reg byte a [ keyboard_event_get::return#4 ] diff --git a/src/test/ref/const-identification.asm b/src/test/ref/const-identification.asm index 9caf57dab..19ecdc158 100644 --- a/src/test/ref/const-identification.asm +++ b/src/test/ref/const-identification.asm @@ -20,21 +20,21 @@ main: { line: { .const x0 = 0 .const x1 = $a - ldx #x0 + ldy #x0 b3: jsr plot - inx - cpx #x1 + iny + cpy #x1 bcc b3 beq b3 rts } -// plot(byte register(X) x) +// plot(byte register(Y) x) plot: { - ldy plots,x - lda SCREEN,y + ldx plots,y + lda SCREEN,x clc adc #1 - sta SCREEN,y + sta SCREEN,x rts } diff --git a/src/test/ref/const-identification.log b/src/test/ref/const-identification.log index d546c4df1..b7a0a01f2 100644 --- a/src/test/ref/const-identification.log +++ b/src/test/ref/const-identification.log @@ -401,11 +401,10 @@ plot: { lda plots,y sta idx //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_plus_1 - ldy idx - lda SCREEN,y - clc - adc #1 - sta _0 + ldx idx + ldy SCREEN,x + iny + sty _0 //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldy idx @@ -420,16 +419,12 @@ plot: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:15 [ line::x#2 plot::idx#0 plot::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ line::x#2 line::x#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ plot::idx#0 ] Statement [6] *((const byte*) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Statement [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:15 [ line::x#2 plot::idx#0 plot::$0 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ line::x#2 line::x#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ line::x#2 line::x#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ plot::x#1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ plot::idx#0 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ plot::idx#0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:6 [ plot::$0 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES @@ -438,10 +433,12 @@ Uplift Scope [plot] 103: zp ZP_BYTE:4 [ plot::x#1 ] 4: zp ZP_BYTE:6 [ plot::$0 ] Uplift Scope [main] 34.83: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [line] best 3736 combination reg byte x [ line::x#2 line::x#1 ] -Uplifting [plot] best 3418 combination reg byte x [ plot::x#1 ] reg byte a [ plot::$0 ] reg byte y [ plot::idx#0 ] -Uplifting [main] best 3268 combination reg byte x [ main::i#2 main::i#1 ] -Uplifting [] best 3268 combination +Uplifting [line] best 4684 combination zp ZP_BYTE:3 [ line::x#2 line::x#1 ] +Uplifting [plot] best 4368 combination reg byte y [ plot::x#1 ] reg byte a [ plot::$0 ] reg byte x [ plot::idx#0 ] +Uplifting [main] best 4218 combination reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 4218 combination +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ line::x#2 line::x#1 ] +Uplifting [line] best 3268 combination reg byte y [ line::x#2 line::x#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -510,8 +507,8 @@ line: { .const x1 = $a //SEG25 [13] phi from line to line::@3 [phi:line->line::@3] b3_from_line: - //SEG26 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuxx=vbuc1 - ldx #x0 + //SEG26 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuyy=vbuc1 + ldy #x0 jmp b3 //SEG27 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] b3_from_b8: @@ -525,10 +522,10 @@ line: { jmp b8 //SEG32 line::@8 b8: - //SEG33 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx - inx - //SEG34 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuxx_le_vbuc1_then_la1 - cpx #x1 + //SEG33 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuyy=_inc_vbuyy + iny + //SEG34 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuyy_le_vbuc1_then_la1 + cpy #x1 bcc b3_from_b8 beq b3_from_b8 jmp breturn @@ -538,16 +535,16 @@ line: { rts } //SEG37 plot -// plot(byte register(X) x) +// plot(byte register(Y) x) plot: { - //SEG38 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx - ldy plots,x - //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 - lda SCREEN,y + //SEG38 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuxx=pbuc1_derefidx_vbuyy + ldx plots,y + //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 + lda SCREEN,x clc adc #1 - //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa - sta SCREEN,y + //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x jmp breturn //SEG41 plot::@return breturn: @@ -606,8 +603,8 @@ FINAL SYMBOL TABLE (label) line::@8 (label) line::@return (byte) line::x -(byte) line::x#1 reg byte x 151.5 -(byte) line::x#2 reg byte x 101.0 +(byte) line::x#1 reg byte y 151.5 +(byte) line::x#2 reg byte y 101.0 (byte) line::x0 (const byte) line::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) line::x1 @@ -622,16 +619,16 @@ FINAL SYMBOL TABLE (byte/signed word/word/dword/signed dword~) plot::$0 reg byte a 4.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte y 3.0 +(byte) plot::idx#0 reg byte x 3.0 (byte) plot::x -(byte) plot::x#1 reg byte x 103.0 +(byte) plot::x#1 reg byte y 103.0 (byte*) plots (const byte*) plots#0 plots = ((byte*))(word/signed word/dword/signed dword) $1000 reg byte x [ main::i#2 main::i#1 ] -reg byte x [ line::x#2 line::x#1 ] -reg byte x [ plot::x#1 ] -reg byte y [ plot::idx#0 ] +reg byte y [ line::x#2 line::x#1 ] +reg byte y [ plot::x#1 ] +reg byte x [ plot::idx#0 ] reg byte a [ plot::$0 ] @@ -686,8 +683,8 @@ line: { .const x0 = 0 .const x1 = $a //SEG25 [13] phi from line to line::@3 [phi:line->line::@3] - //SEG26 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuxx=vbuc1 - ldx #x0 + //SEG26 [13] phi (byte) line::x#2 = (const byte) line::x0#0 [phi:line->line::@3#0] -- vbuyy=vbuc1 + ldy #x0 //SEG27 [13] phi from line::@8 to line::@3 [phi:line::@8->line::@3] //SEG28 [13] phi (byte) line::x#2 = (byte) line::x#1 [phi:line::@8->line::@3#0] -- register_copy //SEG29 line::@3 @@ -696,10 +693,10 @@ line: { //SEG31 [15] call plot jsr plot //SEG32 line::@8 - //SEG33 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuxx=_inc_vbuxx - inx - //SEG34 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuxx_le_vbuc1_then_la1 - cpx #x1 + //SEG33 [16] (byte) line::x#1 ← ++ (byte) line::x#2 -- vbuyy=_inc_vbuyy + iny + //SEG34 [17] if((byte) line::x#1<=(const byte) line::x1#0) goto line::@3 -- vbuyy_le_vbuc1_then_la1 + cpy #x1 bcc b3 beq b3 //SEG35 line::@return @@ -707,16 +704,16 @@ line: { rts } //SEG37 plot -// plot(byte register(X) x) +// plot(byte register(Y) x) plot: { - //SEG38 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuyy=pbuc1_derefidx_vbuxx - ldy plots,x - //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuyy_plus_1 - lda SCREEN,y + //SEG38 [19] (byte) plot::idx#0 ← *((const byte*) plots#0 + (byte) plot::x#1) -- vbuxx=pbuc1_derefidx_vbuyy + ldx plots,y + //SEG39 [20] (byte/signed word/word/dword/signed dword~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 + lda SCREEN,x clc adc #1 - //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuyy=vbuaa - sta SCREEN,y + //SEG40 [21] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte/signed word/word/dword/signed dword~) plot::$0 -- pbuc1_derefidx_vbuxx=vbuaa + sta SCREEN,x //SEG41 plot::@return //SEG42 [22] return rts diff --git a/src/test/ref/const-identification.sym b/src/test/ref/const-identification.sym index 8bd9c7fb3..46320775e 100644 --- a/src/test/ref/const-identification.sym +++ b/src/test/ref/const-identification.sym @@ -8,8 +8,8 @@ (label) line::@8 (label) line::@return (byte) line::x -(byte) line::x#1 reg byte x 151.5 -(byte) line::x#2 reg byte x 101.0 +(byte) line::x#1 reg byte y 151.5 +(byte) line::x#2 reg byte y 101.0 (byte) line::x0 (const byte) line::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) line::x1 @@ -24,14 +24,14 @@ (byte/signed word/word/dword/signed dword~) plot::$0 reg byte a 4.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte y 3.0 +(byte) plot::idx#0 reg byte x 3.0 (byte) plot::x -(byte) plot::x#1 reg byte x 103.0 +(byte) plot::x#1 reg byte y 103.0 (byte*) plots (const byte*) plots#0 plots = ((byte*))(word/signed word/dword/signed dword) $1000 reg byte x [ main::i#2 main::i#1 ] -reg byte x [ line::x#2 line::x#1 ] -reg byte x [ plot::x#1 ] -reg byte y [ plot::idx#0 ] +reg byte y [ line::x#2 line::x#1 ] +reg byte y [ plot::x#1 ] +reg byte x [ plot::idx#0 ] reg byte a [ plot::$0 ] diff --git a/src/test/ref/double-indexing-arrays.asm b/src/test/ref/double-indexing-arrays.asm index fe7b15196..3630471ff 100644 --- a/src/test/ref/double-indexing-arrays.asm +++ b/src/test/ref/double-indexing-arrays.asm @@ -5,40 +5,35 @@ .label SCREEN = $400 .label COLS = $d800 main: { - ldx #0 + ldy #0 b1: - lda MAPDATA,x - sta SCREEN,x - lda MAPDATA,x - tay - lda COLORMAP1,y - sta COLS,x - lda MAPDATA+$c8,x - sta SCREEN+$c8,x - lda MAPDATA+$c8,x - tay - lda COLORMAP1,y - sta COLS+$c8,x - lda MAPDATA+$190,x - sta SCREEN+$190,x - lda MAPDATA+$190,x - tay - lda COLORMAP1,y - sta COLS+$190,x - lda MAPDATA+$258,x - sta SCREEN+$258,x - lda MAPDATA+$258,x - tay - lda COLORMAP2,y - sta COLS+$258,x - lda MAPDATA+$320,x - sta SCREEN+$320,x - lda MAPDATA+$320,x - tay - lda COLORMAP2,y - sta COLS+$320,x - inx - cpx #$c9 + lda MAPDATA,y + sta SCREEN,y + ldx MAPDATA,y + lda COLORMAP1,x + sta COLS,y + lda MAPDATA+$c8,y + sta SCREEN+$c8,y + ldx MAPDATA+$c8,y + lda COLORMAP1,x + sta COLS+$c8,y + lda MAPDATA+$190,y + sta SCREEN+$190,y + ldx MAPDATA+$190,y + lda COLORMAP1,x + sta COLS+$190,y + lda MAPDATA+$258,y + sta SCREEN+$258,y + ldx MAPDATA+$258,y + lda COLORMAP2,x + sta COLS+$258,y + lda MAPDATA+$320,y + sta SCREEN+$320,y + ldx MAPDATA+$320,y + lda COLORMAP2,x + sta COLS+$320,y + iny + cpy #$c9 bne b1 rts } diff --git a/src/test/ref/double-indexing-arrays.log b/src/test/ref/double-indexing-arrays.log index 9c579ea82..a88a18eb0 100644 --- a/src/test/ref/double-indexing-arrays.log +++ b/src/test/ref/double-indexing-arrays.log @@ -99,10 +99,10 @@ SYMBOL TABLE SSA (word/signed word/dword/signed dword~) main::$9 (label) main::@1 (label) main::@return -(byte) main::x -(byte) main::x#0 -(byte) main::x#1 -(byte) main::x#2 +(byte) main::x !reg byte y +(byte) main::x#0 !reg byte y +(byte) main::x#1 !reg byte y +(byte) main::x#2 !reg byte y Culled Empty Block (label) @2 Successful SSA optimization Pass2CullEmptyBlocks @@ -223,15 +223,14 @@ VARIABLE REGISTER WEIGHTS (byte[$3e8]) MAPDATA (byte*) SCREEN (void()) main() -(byte) main::x -(byte) main::x#1 16.5 -(byte) main::x#2 22.0 +(byte) main::x !reg byte y +(byte) main::x#1 !reg byte y 16.5 +(byte) main::x#2 !reg byte y 22.0 Initial phi equivalence classes [ main::x#2 main::x#1 ] Complete equivalence classes [ main::x#2 main::x#1 ] -Allocated zp ZP_BYTE:2 [ main::x#2 main::x#1 ] INITIAL ASM //SEG0 File Comments @@ -261,12 +260,10 @@ bend_from_b1: bend: //SEG10 main main: { - .label x = 2 //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 - lda #0 - sta x + //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + ldy #0 jmp b1 //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: @@ -274,61 +271,45 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 - ldy x + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA,y sta SCREEN,y - //SEG17 [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz1 - ldx x - lda MAPDATA,x - tay - lda COLORMAP1,y - sta COLS,x - //SEG18 [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 - ldy x + //SEG17 [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA,y + lda COLORMAP1,x + sta COLS,y + //SEG18 [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$c8,y sta SCREEN+$c8,y - //SEG19 [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz1 - ldx x - lda MAPDATA+$c8,x - tay - lda COLORMAP1,y - sta COLS+$c8,x - //SEG20 [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 - ldy x + //SEG19 [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$c8,y + lda COLORMAP1,x + sta COLS+$c8,y + //SEG20 [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$190,y sta SCREEN+$190,y - //SEG21 [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz1 - ldx x - lda MAPDATA+$190,x - tay - lda COLORMAP1,y - sta COLS+$190,x - //SEG22 [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 - ldy x + //SEG21 [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$190,y + lda COLORMAP1,x + sta COLS+$190,y + //SEG22 [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$258,y sta SCREEN+$258,y - //SEG23 [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz1 - ldx x - lda MAPDATA+$258,x - tay - lda COLORMAP2,y - sta COLS+$258,x - //SEG24 [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 - ldy x + //SEG23 [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$258,y + lda COLORMAP2,x + sta COLS+$258,y + //SEG24 [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$320,y sta SCREEN+$320,y - //SEG25 [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz1 - ldx x - lda MAPDATA+$320,x - tay - lda COLORMAP2,y - sta COLS+$320,x - //SEG26 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuz1=_inc_vbuz1 - inc x - //SEG27 [17] if((byte) main::x#1!=(byte/word/signed word/dword/signed dword) $c9) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 - lda x - cmp #$c9 + //SEG25 [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$320,y + lda COLORMAP2,x + sta COLS+$320,y + //SEG26 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuyy=_inc_vbuyy + iny + //SEG27 [17] if((byte) main::x#1!=(byte/word/signed word/dword/signed dword) $c9) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$c9 bne b1_from_b1 jmp breturn //SEG28 main::@return @@ -342,34 +323,24 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::x#2 main::x#1 ] -Statement [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a reg byte x Statement [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a +Statement [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a reg byte x Statement [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a +Statement [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a reg byte x Statement [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a +Statement [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a reg byte x Statement [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Statement [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ main::x#2 main::x#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Statement [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) [ main::x#2 ] ( main:2 [ main::x#2 ] ) always clobbers reg byte a reg byte x +Statement [16] (byte) main::x#1 ← ++ (byte) main::x#2 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte y +Potential registers reg byte y [ main::x#2 main::x#1 ] : reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::x#2 main::x#1 ] +Uplift Scope [main] 38.5: reg byte y [ main::x#2 main::x#1 ] Uplift Scope [] -Uplifting [main] best 1468 combination reg byte x [ main::x#2 main::x#1 ] -Uplifting [] best 1468 combination +Uplifting [main] best 1368 combination reg byte y [ main::x#2 main::x#1 ] +Uplifting [] best 1368 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -401,8 +372,8 @@ bend: main: { //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + ldy #0 jmp b1 //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: @@ -410,50 +381,45 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA,x - sta SCREEN,x - //SEG17 [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA,x - tay - lda COLORMAP1,y - sta COLS,x - //SEG18 [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$c8,x - sta SCREEN+$c8,x - //SEG19 [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$c8,x - tay - lda COLORMAP1,y - sta COLS+$c8,x - //SEG20 [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$190,x - sta SCREEN+$190,x - //SEG21 [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$190,x - tay - lda COLORMAP1,y - sta COLS+$190,x - //SEG22 [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$258,x - sta SCREEN+$258,x - //SEG23 [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$258,x - tay - lda COLORMAP2,y - sta COLS+$258,x - //SEG24 [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$320,x - sta SCREEN+$320,x - //SEG25 [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$320,x - tay - lda COLORMAP2,y - sta COLS+$320,x - //SEG26 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuxx=_inc_vbuxx - inx - //SEG27 [17] if((byte) main::x#1!=(byte/word/signed word/dword/signed dword) $c9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$c9 + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA,y + sta SCREEN,y + //SEG17 [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA,y + lda COLORMAP1,x + sta COLS,y + //SEG18 [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$c8,y + sta SCREEN+$c8,y + //SEG19 [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$c8,y + lda COLORMAP1,x + sta COLS+$c8,y + //SEG20 [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$190,y + sta SCREEN+$190,y + //SEG21 [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$190,y + lda COLORMAP1,x + sta COLS+$190,y + //SEG22 [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$258,y + sta SCREEN+$258,y + //SEG23 [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$258,y + lda COLORMAP2,x + sta COLS+$258,y + //SEG24 [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$320,y + sta SCREEN+$320,y + //SEG25 [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$320,y + lda COLORMAP2,x + sta COLS+$320,y + //SEG26 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuyy=_inc_vbuyy + iny + //SEG27 [17] if((byte) main::x#1!=(byte/word/signed word/dword/signed dword) $c9) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$c9 bne b1_from_b1 jmp breturn //SEG28 main::@return @@ -507,15 +473,15 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@1 (label) main::@return -(byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#2 reg byte x 22.0 +(byte) main::x !reg byte y +(byte) main::x#1 !reg byte y 16.5 +(byte) main::x#2 !reg byte y 22.0 -reg byte x [ main::x#2 main::x#1 ] +reg byte y [ main::x#2 main::x#1 ] FINAL ASSEMBLER -Score: 1366 +Score: 1266 //SEG0 File Comments // Tests that constant offset indexing into arrays is handled correctly @@ -536,56 +502,51 @@ Score: 1366 //SEG10 main main: { //SEG11 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG12 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1 + ldy #0 //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] //SEG14 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@1->main::@1#0] -- register_copy //SEG15 main::@1 b1: - //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA,x - sta SCREEN,x - //SEG17 [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA,x - tay - lda COLORMAP1,y - sta COLS,x - //SEG18 [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$c8,x - sta SCREEN+$c8,x - //SEG19 [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$c8,x - tay - lda COLORMAP1,y - sta COLS+$c8,x - //SEG20 [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$190,x - sta SCREEN+$190,x - //SEG21 [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$190,x - tay - lda COLORMAP1,y - sta COLS+$190,x - //SEG22 [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$258,x - sta SCREEN+$258,x - //SEG23 [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$258,x - tay - lda COLORMAP2,y - sta COLS+$258,x - //SEG24 [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx - lda MAPDATA+$320,x - sta SCREEN+$320,x - //SEG25 [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuxx - lda MAPDATA+$320,x - tay - lda COLORMAP2,y - sta COLS+$320,x - //SEG26 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuxx=_inc_vbuxx - inx - //SEG27 [17] if((byte) main::x#1!=(byte/word/signed word/dword/signed dword) $c9) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 - cpx #$c9 + //SEG16 [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA,y + sta SCREEN,y + //SEG17 [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA,y + lda COLORMAP1,x + sta COLS,y + //SEG18 [8] *((const byte*) SCREEN#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$c8,y + sta SCREEN+$c8,y + //SEG19 [9] *((const byte*) COLS#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$c8,y + lda COLORMAP1,x + sta COLS+$c8,y + //SEG20 [10] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$190,y + sta SCREEN+$190,y + //SEG21 [11] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$190,y + lda COLORMAP1,x + sta COLS+$190,y + //SEG22 [12] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$258,y + sta SCREEN+$258,y + //SEG23 [13] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$258,y + lda COLORMAP2,x + sta COLS+$258,y + //SEG24 [14] *((const byte*) SCREEN#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy + lda MAPDATA+$320,y + sta SCREEN+$320,y + //SEG25 [15] *((const byte*) COLS#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word/signed word/dword/signed dword) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + ldx MAPDATA+$320,y + lda COLORMAP2,x + sta COLS+$320,y + //SEG26 [16] (byte) main::x#1 ← ++ (byte) main::x#2 -- vbuyy=_inc_vbuyy + iny + //SEG27 [17] if((byte) main::x#1!=(byte/word/signed word/dword/signed dword) $c9) goto main::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #$c9 bne b1 //SEG28 main::@return //SEG29 [18] return diff --git a/src/test/ref/double-indexing-arrays.sym b/src/test/ref/double-indexing-arrays.sym index d42e20f0b..f1c77c52e 100644 --- a/src/test/ref/double-indexing-arrays.sym +++ b/src/test/ref/double-indexing-arrays.sym @@ -14,8 +14,8 @@ (void()) main() (label) main::@1 (label) main::@return -(byte) main::x -(byte) main::x#1 reg byte x 16.5 -(byte) main::x#2 reg byte x 22.0 +(byte) main::x !reg byte y +(byte) main::x#1 !reg byte y 16.5 +(byte) main::x#2 !reg byte y 22.0 -reg byte x [ main::x#2 main::x#1 ] +reg byte y [ main::x#2 main::x#1 ] diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.asm b/src/test/ref/examples/multiplexer/simple-multiplexer.asm index 013659d16..4d826ae3a 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.asm +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.asm @@ -24,8 +24,9 @@ .label YSIN = $2100 .label PLEX_SCREEN_PTR = SCREEN+$3f8 .label plex_free_next = 3 - .label plex_show_idx = 4 - .label plex_sprite_msb = 5 + .label plex_sprite_idx = 4 + .label plex_show_idx = 5 + .label plex_sprite_msb = 6 main: { sei jsr init @@ -35,8 +36,8 @@ main: { // The raster loop loop: { .label sin_idx = 2 - .label plexFreeNextYpos1_return = 9 - .label ss = 6 + .label plexFreeNextYpos1_return = $a + .label ss = 7 lda #0 sta sin_idx b4: @@ -72,7 +73,7 @@ loop: { sta plex_sprite_msb lda #0 sta plex_show_idx - tax + sta plex_sprite_idx sta plex_free_next // Show the sprites b11: @@ -98,14 +99,12 @@ loop: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label plex_sprite_idx2 = 9 - .label xpos_idx = $a - txa + .label plex_sprite_idx2 = $a + lda plex_sprite_idx asl sta plex_sprite_idx2 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y - tay + ldx plex_show_idx + ldy PLEX_SORTED_IDX,x lda PLEX_YPOS,y ldy plex_sprite_idx2 sta SPRITES_YPOS,y @@ -118,21 +117,18 @@ plexShowSprite: { adc #1 and #7 sta plex_free_next - ldy plex_show_idx - lda PLEX_SORTED_IDX,y - tay + ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y + ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - ldy plex_show_idx - lda PLEX_SORTED_IDX,y + ldx plex_show_idx + lda PLEX_SORTED_IDX,x asl - sta xpos_idx - tay - lda PLEX_XPOS,y + tax + lda PLEX_XPOS,x ldy plex_sprite_idx2 sta SPRITES_XPOS,y - ldy xpos_idx - lda PLEX_XPOS+1,y + lda PLEX_XPOS+1,x cmp #0 bne b1 lda plex_sprite_msb @@ -140,10 +136,11 @@ plexShowSprite: { and SPRITES_XMSB sta SPRITES_XMSB b2: - inx - txa + lda plex_sprite_idx + clc + adc #1 and #7 - tax + sta plex_sprite_idx inc plex_show_idx asl plex_sprite_msb lda plex_sprite_msb @@ -217,7 +214,7 @@ plexSort: { } // Initialize the program init: { - .label xp = 7 + .label xp = 8 lda #VIC_DEN|VIC_RSEL|3 sta D011 jsr plexInit diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log index 569b0c646..f6c1ebddc 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.log +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log @@ -2705,11 +2705,10 @@ plexShowSprite: { asl sta plex_sprite_idx2 //SEG81 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y - tay - lda PLEX_YPOS,y - sta plexFreeAdd1_ypos + ldx plex_show_idx + ldy PLEX_SORTED_IDX,x + ldx PLEX_YPOS,y + stx plexFreeAdd1_ypos //SEG82 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda plexFreeAdd1_ypos ldy plex_sprite_idx2 @@ -2739,9 +2738,8 @@ plexShowSprite: { b7: //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 ldx plex_show_idx - lda PLEX_SORTED_IDX,x - tax - lda PLEX_PTR,x + ldy PLEX_SORTED_IDX,x + lda PLEX_PTR,y ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 @@ -3123,16 +3121,8 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ pl Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] Statement [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] Statement [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Statement [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::xpos_idx#0 ] ) always clobbers reg byte a @@ -3169,7 +3159,6 @@ Statement [25] (byte~) loop::$4 ← *((const byte*) D011#0) & (const byte) VIC_R Statement [28] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ( main:4::loop:9 [ loop::sin_idx#1 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 loop::ss#6 ] ) always clobbers reg byte a Statement [35] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ loop::sin_idx#1 ] ( main:4::loop:9 [ loop::sin_idx#1 ] ) always clobbers reg byte a Statement [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a -Statement [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_ypos#0 ] ) always clobbers reg byte a reg byte y Statement [39] (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$0#0 ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) $15 [ plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_free_next#17 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plexShowSprite::plex_sprite_idx2#0 plexShowSprite::plexFreeAdd1_$0#0 ] ) always clobbers reg byte a Statement [42] (byte) plex_free_next#13 ← (byte/signed word/word/dword/signed dword) plexShowSprite::plexFreeAdd1_$1#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a Statement [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) [ plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ( main:4::loop:9::plexShowSprite:32 [ loop::sin_idx#1 loop::ss#6 plex_sprite_idx#44 plex_show_idx#44 plex_sprite_msb#44 plex_free_next#13 plexShowSprite::plex_sprite_idx2#0 ] ) always clobbers reg byte a @@ -3192,14 +3181,14 @@ Statement [86] *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte~) init::$6) ← Statement [87] (word) init::xp#1 ← (word) init::xp#2 + (byte/signed byte/word/signed word/dword/signed dword) 9 [ init::sx#2 init::xp#1 ] ( main:4::init:7 [ init::sx#2 init::xp#1 ] ) always clobbers reg byte a Statement [90] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff [ ] ( main:4::init:7 [ ] ) always clobbers reg byte a Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::ss#2) ← (const byte) GREEN#0 [ init::ss#2 ] ( main:4::init:7 [ init::ss#2 ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ loop::sy#2 loop::sy#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] : zp ZP_BYTE:5 , reg byte x , -Potential registers zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] : zp ZP_BYTE:6 , reg byte x , -Potential registers zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] : zp ZP_BYTE:7 , reg byte x , -Potential registers zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] : zp ZP_BYTE:8 , reg byte x , -Potential registers zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] : zp ZP_BYTE:9 , reg byte x , +Potential registers zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:11 [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:12 [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , @@ -3209,7 +3198,7 @@ Potential registers zp ZP_BYTE:16 [ init::ss#2 init::ss#1 ] : zp ZP_BYTE:16 , re Potential registers zp ZP_BYTE:17 [ plexInit::i#2 plexInit::i#1 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:18 [ loop::$4 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] : zp ZP_BYTE:20 , reg byte x , +Potential registers zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , @@ -3232,69 +3221,71 @@ Uplift Scope [plexInit] 38.5: zp ZP_BYTE:17 [ plexInit::i#2 plexInit::i#1 ] Uplift Scope [plexShowSprite] 4: zp ZP_BYTE:22 [ plexShowSprite::plexFreeAdd1_$0#0 ] 4: zp ZP_BYTE:23 [ plexShowSprite::plexFreeAdd1_$1#0 ] 4: zp ZP_BYTE:25 [ plexShowSprite::$3 ] 4: zp ZP_BYTE:26 [ plexShowSprite::$4 ] 4: zp ZP_BYTE:27 [ plexShowSprite::$6 ] 4: zp ZP_BYTE:28 [ plexShowSprite::$7 ] 3: zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] 2: zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] 0.6: zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] Uplift Scope [main] -Uplifting [plexSort] best 82584 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:31 [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 82580 combination reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] zp ZP_BYTE:31 [ plexSort::s#2 ] zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] Limited combination testing to 10 combinations of 972 possible. -Uplifting [loop] best 81384 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte x [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] zp ZP_BYTE:18 [ loop::$4 ] zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Limited combination testing to 10 combinations of 576 possible. -Uplifting [init] best 81134 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:32 [ init::$6 ] zp ZP_WORD:14 [ init::xp#2 init::xp#1 ] +Uplifting [loop] best 81380 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] reg byte x [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] zp ZP_BYTE:18 [ loop::$4 ] zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Limited combination testing to 10 combinations of 1296 possible. +Uplifting [init] best 81130 combination reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ init::sx#2 init::sx#1 ] zp ZP_BYTE:32 [ init::$6 ] zp ZP_WORD:14 [ init::xp#2 init::xp#1 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [] best 80826 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] reg byte x [ plex_sprite_idx#44 plex_sprite_idx#15 ] -Limited combination testing to 10 combinations of 16 possible. -Uplifting [plexInit] best 80706 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] -Uplifting [plexShowSprite] best 80696 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$3 ] zp ZP_BYTE:26 [ plexShowSprite::$4 ] zp ZP_BYTE:27 [ plexShowSprite::$6 ] zp ZP_BYTE:28 [ plexShowSprite::$7 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Limited combination testing to 10 combinations of 98304 possible. -Uplifting [main] best 80696 combination +Uplifting [] best 81130 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] +Limited combination testing to 10 combinations of 81 possible. +Uplifting [plexInit] best 81010 combination reg byte x [ plexInit::i#2 plexInit::i#1 ] +Uplifting [plexShowSprite] best 81000 combination reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ] zp ZP_BYTE:25 [ plexShowSprite::$3 ] zp ZP_BYTE:26 [ plexShowSprite::$4 ] zp ZP_BYTE:27 [ plexShowSprite::$6 ] zp ZP_BYTE:28 [ plexShowSprite::$7 ] zp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Limited combination testing to 10 combinations of 147456 possible. +Uplifting [main] best 81000 combination Attempting to uplift remaining variables inzp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] -Uplifting [loop] best 80696 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] +Uplifting [loop] best 81000 combination zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] -Uplifting [loop] best 80166 combination reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] +Uplifting [loop] best 80470 combination reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ loop::$4 ] -Uplifting [loop] best 79566 combination reg byte a [ loop::$4 ] +Uplifting [loop] best 79870 combination reg byte a [ loop::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ plexSort::s#2 ] -Uplifting [plexSort] best 78966 combination reg byte x [ plexSort::s#2 ] +Uplifting [plexSort] best 79270 combination reg byte x [ plexSort::s#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] -Uplifting [plexSort] best 78966 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] +Uplifting [plexSort] best 79270 combination zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] -Uplifting [loop] best 78966 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] +Uplifting [loop] best 79270 combination zp ZP_BYTE:9 [ loop::ss#6 loop::ss#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plexSort::nxt_y#0 ] -Uplifting [plexSort] best 78966 combination zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] +Uplifting [plexSort] best 79270 combination zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] -Uplifting [plexSort] best 78966 combination zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] +Uplifting [plexSort] best 79270 combination zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] -Uplifting [] best 78966 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] +Uplifting [] best 79270 combination zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] -Uplifting [] best 78966 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] +Uplifting [] best 79270 combination zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init::$6 ] -Uplifting [init] best 78926 combination reg byte a [ init::$6 ] +Uplifting [init] best 79230 combination reg byte a [ init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] -Uplifting [] best 78926 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] +Uplifting [] best 79230 combination zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] +Uplifting [] best 79230 combination zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] -Uplifting [loop] best 78926 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] +Uplifting [loop] best 79230 combination zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plexShowSprite::$3 ] -Uplifting [plexShowSprite] best 78920 combination reg byte a [ plexShowSprite::$3 ] +Uplifting [plexShowSprite] best 79224 combination reg byte a [ plexShowSprite::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ plexShowSprite::$4 ] -Uplifting [plexShowSprite] best 78914 combination reg byte a [ plexShowSprite::$4 ] +Uplifting [plexShowSprite] best 79218 combination reg byte a [ plexShowSprite::$4 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ plexShowSprite::$6 ] -Uplifting [plexShowSprite] best 78908 combination reg byte a [ plexShowSprite::$6 ] +Uplifting [plexShowSprite] best 79212 combination reg byte a [ plexShowSprite::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plexShowSprite::$7 ] -Uplifting [plexShowSprite] best 78904 combination reg byte x [ plexShowSprite::$7 ] +Uplifting [plexShowSprite] best 79208 combination reg byte a [ plexShowSprite::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ plexShowSprite::plexFreeAdd1_ypos#0 ] -Uplifting [plexShowSprite] best 78895 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] +Uplifting [plexShowSprite] best 79199 combination reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] -Uplifting [plexShowSprite] best 78895 combination zp ZP_BYTE:24 [ plexShowSprite::xpos_idx#0 ] +Uplifting [plexShowSprite] best 79192 combination reg byte x [ plexShowSprite::xpos_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] -Uplifting [plexShowSprite] best 78895 combination zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] +Uplifting [plexShowSprite] best 79192 combination zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] Coalescing zero page register [ zp ZP_BYTE:5 [ plex_free_next#17 plex_free_next#13 ] ] with [ zp ZP_BYTE:10 [ plexSort::m#2 plexSort::m#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] ] with [ zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] ] with [ zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ plex_sprite_idx#44 plex_sprite_idx#15 ] ] with [ zp ZP_BYTE:29 [ plexSort::nxt_idx#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:7 [ plex_show_idx#44 plex_show_idx#15 ] ] with [ zp ZP_BYTE:30 [ plexSort::nxt_y#0 ] ] Coalescing zero page register [ zp ZP_BYTE:19 [ loop::plexFreeNextYpos1_return#0 ] ] with [ zp ZP_BYTE:20 [ plexShowSprite::plex_sprite_idx2#0 ] ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ plex_free_next#17 plex_free_next#13 plexSort::m#2 plexSort::m#1 ] -Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:4 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_idx#0 ] -Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:5 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 plexSort::nxt_y#0 ] -Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ] -Allocated (was zp ZP_WORD:14) zp ZP_WORD:7 [ init::xp#2 init::xp#1 ] -Allocated (was zp ZP_BYTE:19) zp ZP_BYTE:9 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ] -Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:10 [ plexShowSprite::xpos_idx#0 ] +Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ plex_sprite_idx#44 plex_sprite_idx#15 plexSort::nxt_idx#0 ] +Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:5 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_y#0 ] +Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:6 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] +Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:7 [ loop::ss#6 loop::ss#1 ] +Allocated (was zp ZP_WORD:14) zp ZP_WORD:8 [ init::xp#2 init::xp#1 ] +Allocated (was zp ZP_BYTE:19) zp ZP_BYTE:10 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -3326,8 +3317,9 @@ ASSEMBLER BEFORE OPTIMIZATION .label YSIN = $2100 .label PLEX_SCREEN_PTR = SCREEN+$3f8 .label plex_free_next = 3 - .label plex_show_idx = 4 - .label plex_sprite_msb = 5 + .label plex_sprite_idx = 4 + .label plex_show_idx = 5 + .label plex_sprite_msb = 6 //SEG3 @begin bbegin: jmp b12 @@ -3372,8 +3364,8 @@ main: { // The raster loop loop: { .label sin_idx = 2 - .label plexFreeNextYpos1_return = 9 - .label ss = 6 + .label plexFreeNextYpos1_return = $a + .label ss = 7 //SEG22 [12] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: //SEG23 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 @@ -3459,8 +3451,9 @@ loop: { //SEG54 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 lda #0 sta plex_show_idx - //SEG55 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuxx=vbuc1 - ldx #0 + //SEG55 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 + lda #0 + sta plex_sprite_idx //SEG56 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 lda #0 sta plex_free_next @@ -3524,16 +3517,14 @@ loop: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label plex_sprite_idx2 = 9 - .label xpos_idx = $a - //SEG80 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 - txa + .label plex_sprite_idx2 = $a + //SEG80 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda plex_sprite_idx asl sta plex_sprite_idx2 //SEG81 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y - tay + ldx plex_show_idx + ldy PLEX_SORTED_IDX,x lda PLEX_YPOS,y //SEG82 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 @@ -3557,26 +3548,24 @@ plexShowSprite: { jmp b7 //SEG88 plexShowSprite::@7 b7: - //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuz1 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y - tay + //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + ldx plex_show_idx + ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y + ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 + ldx plex_show_idx + lda PLEX_SORTED_IDX,x asl - sta xpos_idx - //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuz1 - ldy xpos_idx - lda PLEX_XPOS,y + tax + //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuxx + lda PLEX_XPOS,x //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuz1 - ldy xpos_idx - lda PLEX_XPOS+1,y + //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuxx + lda PLEX_XPOS+1,x //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 @@ -3592,12 +3581,13 @@ plexShowSprite: { jmp b2 //SEG98 plexShowSprite::@2 b2: - //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 - inx - //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuxx_band_vbuc1 - txa + //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + lda plex_sprite_idx + clc + adc #1 + //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 - tax + sta plex_sprite_idx //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 @@ -3751,7 +3741,7 @@ plexSort: { //SEG151 init // Initialize the program init: { - .label xp = 7 + .label xp = 8 //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 @@ -3931,10 +3921,9 @@ Removing instruction jmp plexSetScreen1 Removing instruction jmp b1 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction ldx #0 with TAX +Removing instruction lda #0 Removing instruction lda #0 Replacing instruction lda plex_free_next with TYA -Replacing instruction ldy xpos_idx with TAY Replacing instruction ldy nxt_idx with TAY Removing instruction lda nxt_y Replacing instruction ldx #0 with TAX @@ -4016,6 +4005,7 @@ Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction ldx plex_show_idx Removing instruction ldx m Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: @@ -4154,8 +4144,8 @@ FINAL SYMBOL TABLE (byte) init::sx#1 reg byte x 16.5 (byte) init::sx#2 reg byte x 8.8 (word) init::xp -(word) init::xp#1 xp zp ZP_WORD:7 7.333333333333333 -(word) init::xp#2 xp zp ZP_WORD:7 8.25 +(word) init::xp#1 xp zp ZP_WORD:8 7.333333333333333 +(word) init::xp#2 xp zp ZP_WORD:8 8.25 (void()) loop() (byte~) loop::$4 reg byte a 202.0 (label) loop::@1 @@ -4172,14 +4162,14 @@ FINAL SYMBOL TABLE (label) loop::@8 (label) loop::plexFreeNextYpos1 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp ZP_BYTE:9 551.0 +(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp ZP_BYTE:10 551.0 (byte) loop::rasterY (byte) loop::sin_idx (byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.4666666666666666 (byte) loop::sin_idx#6 sin_idx zp ZP_BYTE:2 3.666666666666667 (byte) loop::ss -(byte) loop::ss#1 ss zp ZP_BYTE:6 151.5 -(byte) loop::ss#6 ss zp ZP_BYTE:6 33.666666666666664 +(byte) loop::ss#1 ss zp ZP_BYTE:7 151.5 +(byte) loop::ss#6 ss zp ZP_BYTE:7 33.666666666666664 (byte) loop::sy (byte) loop::sy#1 reg byte x 151.5 (byte) loop::sy#2 reg byte x 101.0 @@ -4204,7 +4194,7 @@ FINAL SYMBOL TABLE (byte~) plexShowSprite::$3 reg byte a 4.0 (byte~) plexShowSprite::$4 reg byte a 4.0 (byte/word/dword~) plexShowSprite::$6 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte x 4.0 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte a 4.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@4 @@ -4220,9 +4210,9 @@ FINAL SYMBOL TABLE (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:9 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:10 0.6000000000000001 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 xpos_idx zp ZP_BYTE:10 2.0 +(byte) plexShowSprite::xpos_idx#0 reg byte x 2.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -4254,46 +4244,46 @@ FINAL SYMBOL TABLE (byte) plex_free_next#13 plex_free_next zp ZP_BYTE:3 4.904761904761904 (byte) plex_free_next#17 plex_free_next zp ZP_BYTE:3 20.599999999999998 (byte) plex_show_idx -(byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:4 11.444444444444443 -(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:4 4.73913043478261 +(byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:5 11.444444444444443 +(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:5 4.73913043478261 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 reg byte x 10.299999999999999 -(byte) plex_sprite_idx#44 reg byte x 5.095238095238094 +(byte) plex_sprite_idx#15 plex_sprite_idx zp ZP_BYTE:4 10.299999999999999 +(byte) plex_sprite_idx#44 plex_sprite_idx zp ZP_BYTE:4 5.095238095238094 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:5 20.599999999999998 -(byte) plex_sprite_msb#25 plex_sprite_msb zp ZP_BYTE:5 2.0 -(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:5 4.458333333333332 +(byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:6 20.599999999999998 +(byte) plex_sprite_msb#25 plex_sprite_msb zp ZP_BYTE:6 2.0 +(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.458333333333332 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] reg byte x [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ plex_free_next#17 plex_free_next#13 plexSort::m#2 plexSort::m#1 ] -reg byte x [ plex_sprite_idx#44 plex_sprite_idx#15 ] -zp ZP_BYTE:4 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_idx#0 ] -zp ZP_BYTE:5 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 plexSort::nxt_y#0 ] -zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ] +zp ZP_BYTE:4 [ plex_sprite_idx#44 plex_sprite_idx#15 plexSort::nxt_idx#0 ] +zp ZP_BYTE:5 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_y#0 ] +zp ZP_BYTE:6 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] +zp ZP_BYTE:7 [ loop::ss#6 loop::ss#1 ] reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] reg byte x [ init::sx#2 init::sx#1 ] -zp ZP_WORD:7 [ init::xp#2 init::xp#1 ] +zp ZP_WORD:8 [ init::xp#2 init::xp#1 ] reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ plexInit::i#2 plexInit::i#1 ] reg byte a [ loop::$4 ] -zp ZP_BYTE:9 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ] +zp ZP_BYTE:10 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ] -zp ZP_BYTE:10 [ plexShowSprite::xpos_idx#0 ] +reg byte x [ plexShowSprite::xpos_idx#0 ] reg byte a [ plexShowSprite::$3 ] reg byte a [ plexShowSprite::$4 ] reg byte a [ plexShowSprite::$6 ] -reg byte x [ plexShowSprite::$7 ] +reg byte a [ plexShowSprite::$7 ] reg byte x [ plexSort::s#2 ] reg byte a [ init::$6 ] FINAL ASSEMBLER -Score: 63455 +Score: 63550 //SEG0 File Comments // A simple usage of the flexible sprite multiplexer routine @@ -4324,8 +4314,9 @@ Score: 63455 .label YSIN = $2100 .label PLEX_SCREEN_PTR = SCREEN+$3f8 .label plex_free_next = 3 - .label plex_show_idx = 4 - .label plex_sprite_msb = 5 + .label plex_sprite_idx = 4 + .label plex_show_idx = 5 + .label plex_sprite_msb = 6 //SEG3 @begin //SEG4 @12 //SEG5 kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }} @@ -4354,8 +4345,8 @@ main: { // The raster loop loop: { .label sin_idx = 2 - .label plexFreeNextYpos1_return = 9 - .label ss = 6 + .label plexFreeNextYpos1_return = $a + .label ss = 7 //SEG22 [12] phi from loop to loop::@1 [phi:loop->loop::@1] //SEG23 [12] phi (byte) loop::sin_idx#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vbuz1=vbuc1 lda #0 @@ -4424,8 +4415,8 @@ loop: { //SEG54 [27] phi (byte) plex_show_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#2] -- vbuz1=vbuc1 lda #0 sta plex_show_idx - //SEG55 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuxx=vbuc1 - tax + //SEG55 [27] phi (byte) plex_sprite_idx#44 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#3] -- vbuz1=vbuc1 + sta plex_sprite_idx //SEG56 [27] phi (byte) plex_free_next#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@8->loop::@11#4] -- vbuz1=vbuc1 sta plex_free_next // Show the sprites @@ -4475,16 +4466,14 @@ loop: { // Show the next sprite. // plexSort() prepares showing the sprites plexShowSprite: { - .label plex_sprite_idx2 = 9 - .label xpos_idx = $a - //SEG80 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 - txa + .label plex_sprite_idx2 = $a + //SEG80 [36] (byte) plexShowSprite::plex_sprite_idx2#0 ← (byte) plex_sprite_idx#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda plex_sprite_idx asl sta plex_sprite_idx2 //SEG81 [37] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y - tay + ldx plex_show_idx + ldy PLEX_SORTED_IDX,x lda PLEX_YPOS,y //SEG82 [38] *((const byte*) SPRITES_YPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte) plexShowSprite::plexFreeAdd1_ypos#0 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 @@ -4504,26 +4493,23 @@ plexShowSprite: { and #7 sta plex_free_next //SEG88 plexShowSprite::@7 - //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_pbuc3_derefidx_vbuz1 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y - tay + //SEG89 [43] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#44) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y + ldx plex_sprite_idx sta PLEX_SCREEN_PTR,x - //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=pbuc1_derefidx_vbuz2_rol_1 - ldy plex_show_idx - lda PLEX_SORTED_IDX,y + //SEG90 [44] (byte) plexShowSprite::xpos_idx#0 ← *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#44) << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=pbuc1_derefidx_vbuz1_rol_1 + ldx plex_show_idx + lda PLEX_SORTED_IDX,x asl - sta xpos_idx - //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuz1 - tay - lda PLEX_XPOS,y + tax + //SEG91 [45] (byte~) plexShowSprite::$3 ← < *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_lo_pwuc1_derefidx_vbuxx + lda PLEX_XPOS,x //SEG92 [46] *((const byte*) SPRITES_XPOS#0 + (byte) plexShowSprite::plex_sprite_idx2#0) ← (byte~) plexShowSprite::$3 -- pbuc1_derefidx_vbuz1=vbuaa ldy plex_sprite_idx2 sta SPRITES_XPOS,y - //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuz1 - ldy xpos_idx - lda PLEX_XPOS+1,y + //SEG93 [47] (byte~) plexShowSprite::$4 ← > *((const word[PLEX_COUNT#0]) PLEX_XPOS#0 + (byte) plexShowSprite::xpos_idx#0) -- vbuaa=_hi_pwuc1_derefidx_vbuxx + lda PLEX_XPOS+1,x //SEG94 [48] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1 -- vbuaa_neq_0_then_la1 cmp #0 bne b1 @@ -4536,12 +4522,13 @@ plexShowSprite: { sta SPRITES_XMSB //SEG98 plexShowSprite::@2 b2: - //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_plus_1 - inx - //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuxx_band_vbuc1 - txa + //SEG99 [51] (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 ← (byte) plex_sprite_idx#44 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + lda plex_sprite_idx + clc + adc #1 + //SEG100 [52] (byte) plex_sprite_idx#15 ← (byte/signed word/word/dword/signed dword~) plexShowSprite::$7 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuaa_band_vbuc1 and #7 - tax + sta plex_sprite_idx //SEG101 [53] (byte) plex_show_idx#15 ← ++ (byte) plex_show_idx#44 -- vbuz1=_inc_vbuz1 inc plex_show_idx //SEG102 [54] (byte) plex_sprite_msb#25 ← (byte) plex_sprite_msb#44 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 @@ -4666,7 +4653,7 @@ plexSort: { //SEG151 init // Initialize the program init: { - .label xp = 7 + .label xp = 8 //SEG152 [81] *((const byte*) D011#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 lda #VIC_DEN|VIC_RSEL|3 sta D011 diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.sym b/src/test/ref/examples/multiplexer/simple-multiplexer.sym index 45a1210c1..4a66bb07d 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.sym +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.sym @@ -127,8 +127,8 @@ (byte) init::sx#1 reg byte x 16.5 (byte) init::sx#2 reg byte x 8.8 (word) init::xp -(word) init::xp#1 xp zp ZP_WORD:7 7.333333333333333 -(word) init::xp#2 xp zp ZP_WORD:7 8.25 +(word) init::xp#1 xp zp ZP_WORD:8 7.333333333333333 +(word) init::xp#2 xp zp ZP_WORD:8 8.25 (void()) loop() (byte~) loop::$4 reg byte a 202.0 (label) loop::@1 @@ -145,14 +145,14 @@ (label) loop::@8 (label) loop::plexFreeNextYpos1 (byte) loop::plexFreeNextYpos1_return -(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp ZP_BYTE:9 551.0 +(byte) loop::plexFreeNextYpos1_return#0 plexFreeNextYpos1_return zp ZP_BYTE:10 551.0 (byte) loop::rasterY (byte) loop::sin_idx (byte) loop::sin_idx#1 sin_idx zp ZP_BYTE:2 1.4666666666666666 (byte) loop::sin_idx#6 sin_idx zp ZP_BYTE:2 3.666666666666667 (byte) loop::ss -(byte) loop::ss#1 ss zp ZP_BYTE:6 151.5 -(byte) loop::ss#6 ss zp ZP_BYTE:6 33.666666666666664 +(byte) loop::ss#1 ss zp ZP_BYTE:7 151.5 +(byte) loop::ss#6 ss zp ZP_BYTE:7 33.666666666666664 (byte) loop::sy (byte) loop::sy#1 reg byte x 151.5 (byte) loop::sy#2 reg byte x 101.0 @@ -177,7 +177,7 @@ (byte~) plexShowSprite::$3 reg byte a 4.0 (byte~) plexShowSprite::$4 reg byte a 4.0 (byte/word/dword~) plexShowSprite::$6 reg byte a 4.0 -(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte x 4.0 +(byte/signed word/word/dword/signed dword~) plexShowSprite::$7 reg byte a 4.0 (label) plexShowSprite::@1 (label) plexShowSprite::@2 (label) plexShowSprite::@4 @@ -193,9 +193,9 @@ (byte) plexShowSprite::plexFreeAdd1_ypos (byte) plexShowSprite::plexFreeAdd1_ypos#0 reg byte a 3.0 (byte) plexShowSprite::plex_sprite_idx2 -(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:9 0.6000000000000001 +(byte) plexShowSprite::plex_sprite_idx2#0 plex_sprite_idx2 zp ZP_BYTE:10 0.6000000000000001 (byte) plexShowSprite::xpos_idx -(byte) plexShowSprite::xpos_idx#0 xpos_idx zp ZP_BYTE:10 2.0 +(byte) plexShowSprite::xpos_idx#0 reg byte x 2.0 (byte) plexShowSprite::ypos (void()) plexSort() (label) plexSort::@1 @@ -227,39 +227,39 @@ (byte) plex_free_next#13 plex_free_next zp ZP_BYTE:3 4.904761904761904 (byte) plex_free_next#17 plex_free_next zp ZP_BYTE:3 20.599999999999998 (byte) plex_show_idx -(byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:4 11.444444444444443 -(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:4 4.73913043478261 +(byte) plex_show_idx#15 plex_show_idx zp ZP_BYTE:5 11.444444444444443 +(byte) plex_show_idx#44 plex_show_idx zp ZP_BYTE:5 4.73913043478261 (byte) plex_sprite_idx -(byte) plex_sprite_idx#15 reg byte x 10.299999999999999 -(byte) plex_sprite_idx#44 reg byte x 5.095238095238094 +(byte) plex_sprite_idx#15 plex_sprite_idx zp ZP_BYTE:4 10.299999999999999 +(byte) plex_sprite_idx#44 plex_sprite_idx zp ZP_BYTE:4 5.095238095238094 (byte) plex_sprite_msb -(byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:5 20.599999999999998 -(byte) plex_sprite_msb#25 plex_sprite_msb zp ZP_BYTE:5 2.0 -(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:5 4.458333333333332 +(byte) plex_sprite_msb#16 plex_sprite_msb zp ZP_BYTE:6 20.599999999999998 +(byte) plex_sprite_msb#25 plex_sprite_msb zp ZP_BYTE:6 2.0 +(byte) plex_sprite_msb#44 plex_sprite_msb zp ZP_BYTE:6 4.458333333333332 zp ZP_BYTE:2 [ loop::sin_idx#6 loop::sin_idx#1 ] reg byte y [ loop::y_idx#2 loop::y_idx#3 loop::y_idx#1 ] reg byte x [ loop::sy#2 loop::sy#1 ] zp ZP_BYTE:3 [ plex_free_next#17 plex_free_next#13 plexSort::m#2 plexSort::m#1 ] -reg byte x [ plex_sprite_idx#44 plex_sprite_idx#15 ] -zp ZP_BYTE:4 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_idx#0 ] -zp ZP_BYTE:5 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 plexSort::nxt_y#0 ] -zp ZP_BYTE:6 [ loop::ss#6 loop::ss#1 ] +zp ZP_BYTE:4 [ plex_sprite_idx#44 plex_sprite_idx#15 plexSort::nxt_idx#0 ] +zp ZP_BYTE:5 [ plex_show_idx#44 plex_show_idx#15 plexSort::nxt_y#0 ] +zp ZP_BYTE:6 [ plex_sprite_msb#44 plex_sprite_msb#16 plex_sprite_msb#25 ] +zp ZP_BYTE:7 [ loop::ss#6 loop::ss#1 ] reg byte x [ plexSort::s#3 plexSort::s#1 plexSort::s#6 ] reg byte x [ plexSort::plexFreePrepare1_s#2 plexSort::plexFreePrepare1_s#1 ] reg byte x [ init::sx#2 init::sx#1 ] -zp ZP_WORD:7 [ init::xp#2 init::xp#1 ] +zp ZP_WORD:8 [ init::xp#2 init::xp#1 ] reg byte x [ init::ss#2 init::ss#1 ] reg byte x [ plexInit::i#2 plexInit::i#1 ] reg byte a [ loop::$4 ] -zp ZP_BYTE:9 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ] +zp ZP_BYTE:10 [ loop::plexFreeNextYpos1_return#0 plexShowSprite::plex_sprite_idx2#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_ypos#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$0#0 ] reg byte a [ plexShowSprite::plexFreeAdd1_$1#0 ] -zp ZP_BYTE:10 [ plexShowSprite::xpos_idx#0 ] +reg byte x [ plexShowSprite::xpos_idx#0 ] reg byte a [ plexShowSprite::$3 ] reg byte a [ plexShowSprite::$4 ] reg byte a [ plexShowSprite::$6 ] -reg byte x [ plexShowSprite::$7 ] +reg byte a [ plexShowSprite::$7 ] reg byte x [ plexSort::s#2 ] reg byte a [ init::$6 ] diff --git a/src/test/script/update-ref.sh b/src/test/script/update-ref.sh index 35df30731..95f8adaf3 100755 --- a/src/test/script/update-ref.sh +++ b/src/test/script/update-ref.sh @@ -6,7 +6,7 @@ export UPD_HOME=$1 echo References ${REF_HOME} echo Updates ${UPD_HOME} rm ${UPD_HOME}/update.sh -pushd ${UPD_HOME} +pushd "${UPD_HOME}" for i in $(find . -type f | grep -v '/bin/'); do echo cp ${UPD_HOME}/${i} ${REF_HOME}/${i} >> update.sh; done popd source ${UPD_HOME}/update.sh