From bf0dbfde6392e283b9c66c3eabab1c01b5fb3a98 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Wed, 29 Apr 2020 08:09:45 +0200 Subject: [PATCH] Slight changes to --- src/main/kc/include/mos6569.h | 15 +- src/test/kc/c64dtv-gfxexplorer.c | 24 +- src/test/ref/c64dtv-gfxexplorer.asm | 66 +-- src/test/ref/c64dtv-gfxexplorer.cfg | 24 +- src/test/ref/c64dtv-gfxexplorer.log | 396 +++++++++--------- src/test/ref/c64dtv-gfxexplorer.sym | 17 +- .../ref/complex/clearscreen/clearscreen.asm | 4 +- .../ref/complex/clearscreen/clearscreen.log | 16 +- src/test/ref/complex/prebob/vogel-sprites.asm | 6 +- src/test/ref/complex/prebob/vogel-sprites.log | 24 +- .../complex/spritescroller/spritescroller.asm | 4 +- .../complex/spritescroller/spritescroller.log | 16 +- src/test/ref/complex/tetris/test-sprites.asm | 4 +- src/test/ref/complex/tetris/test-sprites.log | 16 +- src/test/ref/complex/tetris/tetris.asm | 4 +- src/test/ref/complex/tetris/tetris.log | 16 +- .../simple-multiplexer-irq.asm | 6 +- .../simple-multiplexer-irq.log | 24 +- src/test/ref/scan-desire-problem.asm | 2 +- src/test/ref/scan-desire-problem.log | 8 +- src/test/ref/signed-words.asm | 4 +- src/test/ref/signed-words.log | 16 +- 22 files changed, 365 insertions(+), 347 deletions(-) diff --git a/src/main/kc/include/mos6569.h b/src/main/kc/include/mos6569.h index 9092ea1a8..c48ff3d43 100644 --- a/src/main/kc/include/mos6569.h +++ b/src/main/kc/include/mos6569.h @@ -59,15 +59,17 @@ const char BORDER_YPOS_BOTTOM=250; // The offset of the sprite pointers from the screen start address const unsigned int SPRITE_PTRS = $3f8; -char* const SPRITES_XPOS = $d000; -char* const SPRITES_YPOS = $d001; -char* const SPRITES_XMSB = $d010; -char* const RASTER = $d012; +char * const SPRITES_XPOS = $d000; +char * const SPRITES_YPOS = $d001; +char * const SPRITES_XMSB = $d010; +char * const SPRITES_COLS = $d027; char* const SPRITES_ENABLE = $d015; char* const SPRITES_EXPAND_Y = $d017; char* const SPRITES_PRIORITY = $d01b; char* const SPRITES_MC = $d01c; char* const SPRITES_EXPAND_X = $d01d; + +char* const RASTER = $d012; char* const BORDERCOL = $d020; char* const BGCOL = $d021; char* const BGCOL1 = $d021; @@ -76,11 +78,9 @@ char* const BGCOL3 = $d023; char* const BGCOL4 = $d024; char* const SPRITES_MC1 = $d025; char* const SPRITES_MC2 = $d026; -char* const SPRITES_COLS = $d027; char* const VIC_CONTROL = $d011; char* const D011 = $d011; - const char VIC_RST8 = %10000000; const char VIC_ECM = %01000000; const char VIC_BMM = %00100000; @@ -89,12 +89,11 @@ const char VIC_RSEL = %00001000; char* const VIC_CONTROL2 = $d016; char* const D016 = $d016; - const char VIC_MCM = %00010000; const char VIC_CSEL = %00001000; -char* const D018 = $d018; char* const VIC_MEMORY = $d018; +char* const D018 = $d018; // VIC II IRQ Status Register char* const IRQ_STATUS = $d019; diff --git a/src/test/kc/c64dtv-gfxexplorer.c b/src/test/kc/c64dtv-gfxexplorer.c index 1a48c32e0..2202e16ea 100644 --- a/src/test/kc/c64dtv-gfxexplorer.c +++ b/src/test/kc/c64dtv-gfxexplorer.c @@ -367,11 +367,11 @@ void gfx_mode() { } // Background colors - *BORDERCOL = 0; - *BGCOL1 = *form_vic_bg0_hi*$10|*form_vic_bg0_lo; - *BGCOL2 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo; - *BGCOL3 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo; - *BGCOL4 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo; + VICII->BORDER_COLOR = 0; + VICII->BG_COLOR = *form_vic_bg0_hi*$10|*form_vic_bg0_lo; + VICII->BG_COLOR1 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo; + VICII->BG_COLOR2 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo; + VICII->BG_COLOR3 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo; // DTV Palette if(*form_dtv_palet==0) { @@ -388,7 +388,7 @@ void gfx_mode() { // Wait for the user to press space while(true) { - while(*RASTER!=$ff) {} + while(VICII->RASTER!=$ff) {} keyboard_event_scan(); byte keyboard_event = keyboard_event_get(); if(keyboard_event==KEY_SPACE) { @@ -649,10 +649,10 @@ void form_mode() { // DTV Graphics Mode *DTV_CONTROL = 0; // VIC Graphics Mode - *VIC_CONTROL = VIC_DEN|VIC_RSEL|3; - *VIC_CONTROL2 = VIC_CSEL; + VICII->CONTROL1 = VIC_DEN|VIC_RSEL|3; + VICII->CONTROL2 = VIC_CSEL; // VIC Memory Pointers - *VIC_MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400)); + VICII->MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400)); // DTV Plane A to FORM_SCREEN also *DTV_PLANEA_START_LO = < FORM_SCREEN; *DTV_PLANEA_START_MI = > FORM_SCREEN; @@ -662,14 +662,14 @@ void form_mode() { DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i]; } // Screen colors - *BGCOL = 0; - *BORDERCOL = 0; + VICII->BG_COLOR = 0; + VICII->BORDER_COLOR = 0; byte preset_current = *form_preset; // Let the user change values in the form while(true) { - while(*RASTER!=$ff) {} + while(VICII->RASTER!=$ff) {} if(form_control()!=0) { // Space pressed - change to GFX mode return; diff --git a/src/test/ref/c64dtv-gfxexplorer.asm b/src/test/ref/c64dtv-gfxexplorer.asm index 036dad8e6..9d093789e 100644 --- a/src/test/ref/c64dtv-gfxexplorer.asm +++ b/src/test/ref/c64dtv-gfxexplorer.asm @@ -2,13 +2,6 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label RASTER = $d012 - .label BORDERCOL = $d020 - .label BGCOL = $d021 - .label BGCOL1 = $d021 - .label BGCOL2 = $d022 - .label BGCOL3 = $d023 - .label BGCOL4 = $d024 .label VIC_CONTROL = $d011 .const VIC_ECM = $40 .const VIC_BMM = $20 @@ -30,6 +23,8 @@ .const PROCPORT_RAM_CHARROM = 1 // The address of the CHARGEN character set .label CHARGEN = $d000 + // The VIC-II MOS 6567/6569 + .label VICII = $d000 // Color Ram .label COLS = $d800 // The CIA#1: keyboard matrix, joystick #1/#2 @@ -158,6 +153,15 @@ .const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1 + .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24 + .const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16 + .const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18 // Number of form fields .const form_fields_cnt = $24 .label print_line_cursor = 7 @@ -536,10 +540,10 @@ gfx_mode: { lda #$19 cmp.z cy bne __b19 - // *BORDERCOL = 0 + // VICII->BORDER_COLOR = 0 // Background colors lda #0 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // *form_vic_bg0_hi*$10 lda form_vic_bg0_hi asl @@ -548,8 +552,8 @@ gfx_mode: { asl // *form_vic_bg0_hi*$10|*form_vic_bg0_lo ora form_vic_bg0_lo - // *BGCOL1 = *form_vic_bg0_hi*$10|*form_vic_bg0_lo - sta BGCOL1 + // VICII->BG_COLOR = *form_vic_bg0_hi*$10|*form_vic_bg0_lo + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR // *form_vic_bg1_hi*$10 lda form_vic_bg1_hi asl @@ -558,8 +562,8 @@ gfx_mode: { asl // *form_vic_bg1_hi*$10|*form_vic_bg1_lo ora form_vic_bg1_lo - // *BGCOL2 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo - sta BGCOL2 + // VICII->BG_COLOR1 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 // *form_vic_bg2_hi*$10 lda form_vic_bg2_hi asl @@ -568,8 +572,8 @@ gfx_mode: { asl // *form_vic_bg2_hi*$10|*form_vic_bg2_lo ora form_vic_bg2_lo - // *BGCOL3 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo - sta BGCOL3 + // VICII->BG_COLOR2 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 // *form_vic_bg3_hi*$10 lda form_vic_bg3_hi asl @@ -578,8 +582,8 @@ gfx_mode: { asl // *form_vic_bg3_hi*$10|*form_vic_bg3_lo ora form_vic_bg3_lo - // *BGCOL4 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo - sta BGCOL4 + // VICII->BG_COLOR3 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 // if(*form_dtv_palet==0) // DTV Palette lda form_dtv_palet @@ -596,9 +600,9 @@ gfx_mode: { cpx #$10 bne __b23 __b25: - // while(*RASTER!=$ff) + // while(VICII->RASTER!=$ff) lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b25 // keyboard_event_scan() jsr keyboard_event_scan @@ -1164,17 +1168,17 @@ form_mode: { // DTV Graphics Mode lda #0 sta DTV_CONTROL - // *VIC_CONTROL = VIC_DEN|VIC_RSEL|3 + // VICII->CONTROL1 = VIC_DEN|VIC_RSEL|3 // VIC Graphics Mode lda #VIC_DEN|VIC_RSEL|3 - sta VIC_CONTROL - // *VIC_CONTROL2 = VIC_CSEL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1 + // VICII->CONTROL2 = VIC_CSEL lda #VIC_CSEL - sta VIC_CONTROL2 - // *VIC_MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400)) + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2 + // VICII->MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400)) // VIC Memory Pointers lda #(FORM_SCREEN&$3fff)/$40|(FORM_CHARSET&$3fff)/$400 - sta VIC_MEMORY + sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY // *DTV_PLANEA_START_LO = < FORM_SCREEN // DTV Plane A to FORM_SCREEN also lda #0 @@ -1195,21 +1199,21 @@ form_mode: { inx cpx #$10 bne __b1 - // *BGCOL = 0 + // VICII->BG_COLOR = 0 // Screen colors lda #0 - sta BGCOL - // *BORDERCOL = 0 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR + // VICII->BORDER_COLOR = 0 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // preset_current = *form_preset lda form_fields_val sta.z preset_current __b2: // Let the user change values in the form __b4: - // while(*RASTER!=$ff) + // while(VICII->RASTER!=$ff) lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b4 // form_control() jsr form_control diff --git a/src/test/ref/c64dtv-gfxexplorer.cfg b/src/test/ref/c64dtv-gfxexplorer.cfg index fc641dd72..baa331f74 100644 --- a/src/test/ref/c64dtv-gfxexplorer.cfg +++ b/src/test/ref/c64dtv-gfxexplorer.cfg @@ -199,19 +199,19 @@ gfx_mode::@21: scope:[gfx_mode] from gfx_mode::@20 [120] if((byte) gfx_mode::cy#1!=(byte) $19) goto gfx_mode::@19 to:gfx_mode::@22 gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21 - [121] *((const nomodify byte*) BORDERCOL) ← (byte) 0 + [121] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [122] (byte~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) << (byte) 4 [123] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) - [124] *((const nomodify byte*) BGCOL1) ← (byte~) gfx_mode::$56 + [124] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte~) gfx_mode::$56 [125] (byte~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) << (byte) 4 [126] (byte~) gfx_mode::$58 ← (byte~) gfx_mode::$57 | *((const nomodify byte*) form_vic_bg1_lo) - [127] *((const nomodify byte*) BGCOL2) ← (byte~) gfx_mode::$58 + [127] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1) ← (byte~) gfx_mode::$58 [128] (byte~) gfx_mode::$59 ← *((const nomodify byte*) form_vic_bg2_hi) << (byte) 4 [129] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$59 | *((const nomodify byte*) form_vic_bg2_lo) - [130] *((const nomodify byte*) BGCOL3) ← (byte~) gfx_mode::$60 + [130] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2) ← (byte~) gfx_mode::$60 [131] (byte~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) << (byte) 4 [132] (byte~) gfx_mode::$62 ← (byte~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) - [133] *((const nomodify byte*) BGCOL4) ← (byte~) gfx_mode::$62 + [133] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3) ← (byte~) gfx_mode::$62 [134] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 to:gfx_mode::@23 gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 gfx_mode::@23 @@ -221,7 +221,7 @@ gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 gfx_mode::@23 [138] if((byte) gfx_mode::j#1!=(byte) $10) goto gfx_mode::@23 to:gfx_mode::@25 gfx_mode::@25: scope:[gfx_mode] from gfx_mode::@23 gfx_mode::@24 gfx_mode::@25 gfx_mode::@33 - [139] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 + [139] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@25 to:gfx_mode::@26 gfx_mode::@26: scope:[gfx_mode] from gfx_mode::@25 [140] phi() @@ -528,9 +528,9 @@ form_mode::@16: scope:[form_mode] from form_mode::@15 [273] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (byte) 3 [274] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2) ← (byte) 3 [275] *((const nomodify byte*) DTV_CONTROL) ← (byte) 0 - [276] *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 - [277] *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL - [278] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 + [276] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 + [277] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL + [278] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 [279] *((const nomodify byte*) DTV_PLANEA_START_LO) ← (byte) 0 [280] *((const nomodify byte*) DTV_PLANEA_START_MI) ← >(const nomodify byte*) FORM_SCREEN [281] *((const nomodify byte*) DTV_PLANEA_START_HI) ← (byte) 0 @@ -542,8 +542,8 @@ form_mode::@1: scope:[form_mode] from form_mode::@1 form_mode::@16 [285] if((byte) form_mode::i#1!=(byte) $10) goto form_mode::@1 to:form_mode::@2 form_mode::@2: scope:[form_mode] from form_mode::@1 - [286] *((const nomodify byte*) BGCOL) ← (byte) 0 - [287] *((const nomodify byte*) BORDERCOL) ← (byte) 0 + [286] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0 + [287] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [288] (byte) form_mode::preset_current#0 ← *((const byte*) form_fields_val) to:form_mode::@3 form_mode::@3: scope:[form_mode] from form_mode::@19 form_mode::@2 form_mode::@6 @@ -553,7 +553,7 @@ form_mode::@3: scope:[form_mode] from form_mode::@19 form_mode::@2 form_mode::@ [289] (signed byte) form_cursor_count#21 ← phi( form_mode::@2/(signed byte) form_cursor_count#1 form_mode::@19/(signed byte) form_cursor_count#16 form_mode::@6/(signed byte) form_cursor_count#16 ) to:form_mode::@4 form_mode::@4: scope:[form_mode] from form_mode::@3 form_mode::@4 - [290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 + [290] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 to:form_mode::@5 form_mode::@5: scope:[form_mode] from form_mode::@4 [291] phi() diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log index 23665d629..e829c44ee 100644 --- a/src/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/ref/c64dtv-gfxexplorer.log @@ -1872,19 +1872,19 @@ gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21 gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 (byte) keyboard_modifiers#83 ← phi( gfx_mode::@22/(byte) keyboard_modifiers#88 ) (byte) keyboard_events_size#92 ← phi( gfx_mode::@22/(byte) keyboard_events_size#101 ) - *((const nomodify byte*) BORDERCOL) ← (number) 0 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (number) 0 (number~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) * (number) $10 (number~) gfx_mode::$56 ← (number~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) - *((const nomodify byte*) BGCOL1) ← (number~) gfx_mode::$56 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (number~) gfx_mode::$56 (number~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) * (number) $10 (number~) gfx_mode::$58 ← (number~) gfx_mode::$57 | *((const nomodify byte*) form_vic_bg1_lo) - *((const nomodify byte*) BGCOL2) ← (number~) gfx_mode::$58 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1) ← (number~) gfx_mode::$58 (number~) gfx_mode::$59 ← *((const nomodify byte*) form_vic_bg2_hi) * (number) $10 (number~) gfx_mode::$60 ← (number~) gfx_mode::$59 | *((const nomodify byte*) form_vic_bg2_lo) - *((const nomodify byte*) BGCOL3) ← (number~) gfx_mode::$60 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2) ← (number~) gfx_mode::$60 (number~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) * (number) $10 (number~) gfx_mode::$62 ← (number~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) - *((const nomodify byte*) BGCOL4) ← (number~) gfx_mode::$62 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3) ← (number~) gfx_mode::$62 (bool~) gfx_mode::$63 ← *((const nomodify byte*) form_dtv_palet) == (number) 0 if((bool~) gfx_mode::$63) goto gfx_mode::@10 to:gfx_mode::@24 @@ -1924,7 +1924,7 @@ gfx_mode::@27: scope:[gfx_mode] from gfx_mode::@25 gfx_mode::@26 gfx_mode::@36 gfx_mode::@28: scope:[gfx_mode] from gfx_mode::@27 gfx_mode::@28 (byte) keyboard_modifiers#59 ← phi( gfx_mode::@27/(byte) keyboard_modifiers#41 gfx_mode::@28/(byte) keyboard_modifiers#59 ) (byte) keyboard_events_size#60 ← phi( gfx_mode::@27/(byte) keyboard_events_size#45 gfx_mode::@28/(byte) keyboard_events_size#60 ) - (bool~) gfx_mode::$77 ← *((const nomodify byte*) RASTER) != (number) $ff + (bool~) gfx_mode::$77 ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) != (number) $ff if((bool~) gfx_mode::$77) goto gfx_mode::@28 to:gfx_mode::@29 gfx_mode::@29: scope:[gfx_mode] from gfx_mode::@28 @@ -2806,9 +2806,9 @@ form_mode::@16: scope:[form_mode] from form_mode::@15 *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (number) 3 *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A) ← (number) 3^(byte)(word)(const nomodify byte*) FORM_CHARSET/(number) $4000 *((const nomodify byte*) DTV_CONTROL) ← (number) 0 - *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 - *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL - *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(number) $3fff/(number) $400 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(number) $3fff/(number) $400 *((const nomodify byte*) DTV_PLANEA_START_LO) ← <(const nomodify byte*) FORM_SCREEN *((const nomodify byte*) DTV_PLANEA_START_MI) ← >(const nomodify byte*) FORM_SCREEN *((const nomodify byte*) DTV_PLANEA_START_HI) ← (number) 0 @@ -2836,8 +2836,8 @@ form_mode::@2: scope:[form_mode] from form_mode::@1 (byte*) print_char_cursor#56 ← phi( form_mode::@1/(byte*) print_char_cursor#62 ) (byte*) print_line_cursor#49 ← phi( form_mode::@1/(byte*) print_line_cursor#57 ) (byte*) print_screen#28 ← phi( form_mode::@1/(byte*) print_screen#34 ) - *((const nomodify byte*) BGCOL) ← (number) 0 - *((const nomodify byte*) BORDERCOL) ← (number) 0 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (number) 0 + *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (number) 0 (byte) form_mode::preset_current#0 ← *((const nomodify byte*) form_preset) to:form_mode::@3 form_mode::@3: scope:[form_mode] from form_mode::@2 form_mode::@20 form_mode::@6 @@ -2860,7 +2860,7 @@ form_mode::@4: scope:[form_mode] from form_mode::@3 form_mode::@4 (byte) keyboard_modifiers#63 ← phi( form_mode::@3/(byte) keyboard_modifiers#44 form_mode::@4/(byte) keyboard_modifiers#63 ) (byte) keyboard_events_size#64 ← phi( form_mode::@3/(byte) keyboard_events_size#47 form_mode::@4/(byte) keyboard_events_size#64 ) (signed byte) form_cursor_count#32 ← phi( form_mode::@3/(signed byte) form_cursor_count#21 form_mode::@4/(signed byte) form_cursor_count#32 ) - (bool~) form_mode::$10 ← *((const nomodify byte*) RASTER) != (number) $ff + (bool~) form_mode::$10 ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) != (number) $ff if((bool~) form_mode::$10) goto form_mode::@4 to:form_mode::@5 form_mode::@5: scope:[form_mode] from form_mode::@4 @@ -3322,12 +3322,6 @@ SYMBOL TABLE SSA (label) @5 (label) @begin (label) @end -(const nomodify byte*) BGCOL = (byte*)(number) $d021 -(const nomodify byte*) BGCOL1 = (byte*)(number) $d021 -(const nomodify byte*) BGCOL2 = (byte*)(number) $d022 -(const nomodify byte*) BGCOL3 = (byte*)(number) $d023 -(const nomodify byte*) BGCOL4 = (byte*)(number) $d024 -(const nomodify byte*) BORDERCOL = (byte*)(number) $d020 (const nomodify byte*) CHARGEN = (byte*)(number) $d000 (const nomodify struct MOS6526_CIA*) CIA1 = (struct MOS6526_CIA*)(number) $dc00 (const nomodify struct MOS6526_CIA*) CIA2 = (struct MOS6526_CIA*)(number) $dd00 @@ -3464,6 +3458,15 @@ SYMBOL TABLE SSA (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = (byte) 2 (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_B = (byte) 1 (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = (byte) 3 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = (byte) $21 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = (byte) $22 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = (byte) $23 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = (byte) $24 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = (byte) $20 +(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = (byte) $11 +(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = (byte) $16 +(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY = (byte) $18 +(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER = (byte) $12 (const nomodify dword) PLANE_8BPP_CHUNKY = (dword) $20000 (const nomodify dword) PLANE_BLANK = (dword) $38000 (const nomodify dword) PLANE_CHARSET8 = (dword) $3c000 @@ -3481,7 +3484,7 @@ SYMBOL TABLE SSA (const byte) RADIX::DECIMAL = (number) $a (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 -(const nomodify byte*) RASTER = (byte*)(number) $d012 +(const nomodify struct MOS6569_VICII*) VICII = (struct MOS6569_VICII*)(number) $d000 (const nomodify byte*) VIC_BITMAP = (byte*)(number) $6000 (const nomodify byte) VIC_BMM = (byte) $20 (const nomodify byte*) VIC_CHARSET_ROM = (byte*)(number) $5800 @@ -6300,7 +6303,7 @@ Adding number conversion cast (unumber) gfx_mode::$51 in (number~) gfx_mode::$51 Adding number conversion cast (unumber) 4 in (number~) gfx_mode::$52 ← (unumber~) gfx_mode::$51 / (number) 4 Adding number conversion cast (unumber) gfx_mode::$52 in (number~) gfx_mode::$52 ← (unumber~) gfx_mode::$51 / (unumber)(number) 4 Adding number conversion cast (unumber) gfx_mode::$53 in (number~) gfx_mode::$53 ← (byte~) gfx_mode::$84 | (unumber~) gfx_mode::$52 -Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BORDERCOL) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (number) 0 Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) * (number) $10 Adding number conversion cast (unumber) gfx_mode::$55 in (number~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) * (unumber)(number) $10 Adding number conversion cast (unumber) gfx_mode::$56 in (number~) gfx_mode::$56 ← (unumber~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) @@ -6314,7 +6317,7 @@ Adding number conversion cast (unumber) $10 in (number~) gfx_mode::$61 ← *((co Adding number conversion cast (unumber) gfx_mode::$61 in (number~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) * (unumber)(number) $10 Adding number conversion cast (unumber) gfx_mode::$62 in (number~) gfx_mode::$62 ← (unumber~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) Adding number conversion cast (unumber) 0 in (bool~) gfx_mode::$63 ← *((const nomodify byte*) form_dtv_palet) == (number) 0 -Adding number conversion cast (unumber) $ff in (bool~) gfx_mode::$77 ← *((const nomodify byte*) RASTER) != (number) $ff +Adding number conversion cast (unumber) $ff in (bool~) gfx_mode::$77 ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) != (number) $ff Adding number conversion cast (unumber) $32 in *((const nomodify byte*) PROCPORT) ← (number) $32 Adding number conversion cast (unumber) $37 in *((const nomodify byte*) PROCPORT) ← (number) $37 Adding number conversion cast (unumber) $f in (number~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#2 & (number) $f @@ -6389,14 +6392,14 @@ Adding number conversion cast (unumber) 3^(byte)(word)FORM_CHARSET/$4000 in *((b Adding number conversion cast (unumber) 3 in *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A) ← ((unumber)) (number) 3^(byte)(word)(const nomodify byte*) FORM_CHARSET/(number) $4000 Adding number conversion cast (unumber) $4000 in *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A) ← ((unumber)) (unumber)(number) 3^(byte)(word)(const nomodify byte*) FORM_CHARSET/(number) $4000 Adding number conversion cast (unumber) 0 in *((const nomodify byte*) DTV_CONTROL) ← (number) 0 -Adding number conversion cast (unumber) VIC_DEN|VIC_RSEL|3 in *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 -Adding number conversion cast (unumber) 3 in *((const nomodify byte*) VIC_CONTROL) ← ((unumber)) (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 -Adding number conversion cast (unumber) $3fff in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(number) $3fff/(number) $400 -Adding number conversion cast (unumber) $3fff in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(number) $3fff/(number) $400 +Adding number conversion cast (unumber) VIC_DEN|VIC_RSEL|3 in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 +Adding number conversion cast (unumber) 3 in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← ((unumber)) (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 +Adding number conversion cast (unumber) $3fff in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(number) $3fff/(number) $400 +Adding number conversion cast (unumber) $3fff in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(number) $3fff/(number) $400 Adding number conversion cast (unumber) 0 in *((const nomodify byte*) DTV_PLANEA_START_HI) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BGCOL) ← (number) 0 -Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BORDERCOL) ← (number) 0 -Adding number conversion cast (unumber) $ff in (bool~) form_mode::$10 ← *((const nomodify byte*) RASTER) != (number) $ff +Adding number conversion cast (unumber) 0 in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (number) 0 +Adding number conversion cast (unumber) 0 in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (number) 0 +Adding number conversion cast (unumber) $ff in (bool~) form_mode::$10 ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) != (number) $ff Adding number conversion cast (unumber) 0 in (bool~) form_mode::$12 ← (byte~) form_mode::$11 != (number) 0 Adding number conversion cast (snumber) 2 in (signed byte) form_cursor_count#4 ← (signed byte)(const nomodify signed byte) FORM_CURSOR_BLINK/(number) 2 Adding number conversion cast (unumber) $28 in (byte*~) form_set_screen::$2 ← (byte*) form_set_screen::line#2 + (number) $28 @@ -6428,8 +6431,8 @@ Adding number conversion cast (unumber) $4000 in (byte*) gfx_init_plane_horisont Adding number conversion cast (unumber) $4000 in (byte*) gfx_init_plane_horisontal2::gfxa#0 ← (byte*)(number) $4000+(const nomodify dword) PLANE_HORISONTAL2&(unumber)(number) $3fff Adding number conversion cast (unumber) $4000 in (byte*) gfx_init_plane_vertical::gfxb#0 ← (byte*)(number) $4000+(const nomodify dword) PLANE_VERTICAL&(unumber)(number) $3fff Adding number conversion cast (unumber) $4000 in (byte*) gfx_init_plane_charset8::gfxa#0 ← (byte*)(number) $4000+(const nomodify dword) PLANE_CHARSET8&(unumber)(number) $3fff -Adding number conversion cast (unumber) $40 in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(unumber)(number) $3fff/(number) $400 -Adding number conversion cast (unumber) $400 in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(unumber)(number) $3fff/(unumber)(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(unumber)(number) $3fff/(number) $400 +Adding number conversion cast (unumber) $40 in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(unumber)(number) $3fff/(number) $400 +Adding number conversion cast (unumber) $400 in *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(unumber)(number) $3fff/(unumber)(number) $40|(word)(const nomodify byte*) FORM_CHARSET&(unumber)(number) $3fff/(number) $400 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2 Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8 @@ -6444,7 +6447,7 @@ Inlining cast *((const nomodify byte*) DTV_PLANEA_MODULO_HI) ← (unumber)(numbe Inlining cast *((const nomodify byte*) DTV_PLANEB_MODULO_HI) ← (unumber)(number) 0 Inlining cast *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (unumber)(number) 3 Inlining cast *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A) ← (unumber)(unumber)(number) 3^(byte)(word)(const nomodify byte*) VIC_SCREEN0/(unumber)(number) $4000 -Inlining cast *((const nomodify byte*) BORDERCOL) ← (unumber)(number) 0 +Inlining cast *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (unumber)(number) 0 Inlining cast *((const nomodify byte*) PROCPORT) ← (unumber)(number) $32 Inlining cast *((const nomodify byte*) PROCPORT) ← (unumber)(number) $37 Inlining cast *((byte*) gfx_init_screen4::ch#2) ← (unumber)(number) 0 @@ -6459,10 +6462,10 @@ Inlining cast (byte*) gfx_init_plane_fill::gfxb#0 ← (byte*)(unumber~) gfx_init Inlining cast *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (unumber)(number) 3 Inlining cast *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A) ← (unumber)(unumber)(number) 3^(byte)(word)(const nomodify byte*) FORM_CHARSET/(unumber)(number) $4000 Inlining cast *((const nomodify byte*) DTV_CONTROL) ← (unumber)(number) 0 -Inlining cast *((const nomodify byte*) VIC_CONTROL) ← (unumber)(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3 +Inlining cast *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (unumber)(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3 Inlining cast *((const nomodify byte*) DTV_PLANEA_START_HI) ← (unumber)(number) 0 -Inlining cast *((const nomodify byte*) BGCOL) ← (unumber)(number) 0 -Inlining cast *((const nomodify byte*) BORDERCOL) ← (unumber)(number) 0 +Inlining cast *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (unumber)(number) 0 +Inlining cast *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (unumber)(number) 0 Inlining cast (signed byte) form_cursor_count#7 ← (snumber)(const nomodify signed byte) FORM_CURSOR_BLINK/(snumber)(number) 2 Inlining cast (byte) form_control::return#1 ← (unumber)(number) 0 Inlining cast (byte) form_field_idx#8 ← (unumber)(number) 0 @@ -6471,19 +6474,13 @@ Inlining cast *((const byte*) form_fields_val + (byte) form_field_idx#23) ← (u Inlining cast (byte) form_control::return#4 ← (unumber)(number) 0 Inlining cast (byte) form_control::return#5 ← (unumber)(number) $ff Successful SSA optimization Pass2InlineCast -Simplifying constant pointer cast (byte*) 53266 -Simplifying constant pointer cast (byte*) 53280 -Simplifying constant pointer cast (byte*) 53281 -Simplifying constant pointer cast (byte*) 53281 -Simplifying constant pointer cast (byte*) 53282 -Simplifying constant pointer cast (byte*) 53283 -Simplifying constant pointer cast (byte*) 53284 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53270 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 0 Simplifying constant pointer cast (byte*) 1 Simplifying constant pointer cast (byte*) 53248 +Simplifying constant pointer cast (struct MOS6569_VICII*) 53248 Simplifying constant pointer cast (byte*) 55296 Simplifying constant pointer cast (struct MOS6526_CIA*) 56320 Simplifying constant pointer cast (struct MOS6526_CIA*) 56576 @@ -7800,7 +7797,7 @@ Simple Condition (bool~) gfx_mode::$74 [656] if((byte) gfx_mode::cy#1!=rangelast Simple Condition (bool~) gfx_mode::$63 [671] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@10 Simple Condition (bool~) gfx_mode::$75 [678] if((byte) gfx_mode::j#1!=rangelast(0,$f)) goto gfx_mode::@25 Simple Condition (bool~) gfx_mode::$76 [683] if((byte) gfx_mode::i#1!=rangelast(0,$f)) goto gfx_mode::@26 -Simple Condition (bool~) gfx_mode::$77 [688] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@28 +Simple Condition (bool~) gfx_mode::$77 [688] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@28 Simple Condition (bool~) gfx_mode::$81 [696] if((byte) gfx_mode::keyboard_event#0!=(const nomodify byte) KEY_SPACE) goto gfx_mode::@27 Simple Condition (bool~) gfx_init_charset::$0 [727] if((byte) gfx_init_charset::l#1!=rangelast(0,7)) goto gfx_init_charset::@2 Simple Condition (bool~) gfx_init_charset::$1 [730] if((byte) gfx_init_charset::c#1!=rangelast(0,$ff)) goto gfx_init_charset::@1 @@ -7832,7 +7829,7 @@ Simple Condition (bool~) gfx_init_plane_charset8::$8 [964] if((byte) gfx_init_pl Simple Condition (bool~) gfx_init_plane_fill::$8 [1000] if((byte) gfx_init_plane_fill::bx#1!=rangelast(0,$27)) goto gfx_init_plane_fill::@2 Simple Condition (bool~) gfx_init_plane_fill::$9 [1003] if((byte) gfx_init_plane_fill::by#1!=rangelast(0,$c7)) goto gfx_init_plane_fill::@1 Simple Condition (bool~) form_mode::$9 [1046] if((byte) form_mode::i#1!=rangelast(0,$f)) goto form_mode::@1 -Simple Condition (bool~) form_mode::$10 [1054] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 +Simple Condition (bool~) form_mode::$10 [1054] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 Simple Condition (bool~) form_mode::$13 [1060] if((byte~) form_mode::$11==(byte) 0) goto form_mode::@6 Simple Condition (bool~) form_mode::$15 [1062] if((byte) form_mode::preset_current#6==*((const nomodify byte*) form_preset)) goto form_mode::@3 Simple Condition (bool~) form_set_screen::$3 [1083] if((byte) form_set_screen::y#1!=rangelast(0,$18)) goto form_set_screen::@1 @@ -9795,19 +9792,19 @@ gfx_mode::@21: scope:[gfx_mode] from gfx_mode::@20 [120] if((byte) gfx_mode::cy#1!=(byte) $19) goto gfx_mode::@19 to:gfx_mode::@22 gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21 - [121] *((const nomodify byte*) BORDERCOL) ← (byte) 0 + [121] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [122] (byte~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) << (byte) 4 [123] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) - [124] *((const nomodify byte*) BGCOL1) ← (byte~) gfx_mode::$56 + [124] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte~) gfx_mode::$56 [125] (byte~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) << (byte) 4 [126] (byte~) gfx_mode::$58 ← (byte~) gfx_mode::$57 | *((const nomodify byte*) form_vic_bg1_lo) - [127] *((const nomodify byte*) BGCOL2) ← (byte~) gfx_mode::$58 + [127] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1) ← (byte~) gfx_mode::$58 [128] (byte~) gfx_mode::$59 ← *((const nomodify byte*) form_vic_bg2_hi) << (byte) 4 [129] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$59 | *((const nomodify byte*) form_vic_bg2_lo) - [130] *((const nomodify byte*) BGCOL3) ← (byte~) gfx_mode::$60 + [130] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2) ← (byte~) gfx_mode::$60 [131] (byte~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) << (byte) 4 [132] (byte~) gfx_mode::$62 ← (byte~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) - [133] *((const nomodify byte*) BGCOL4) ← (byte~) gfx_mode::$62 + [133] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3) ← (byte~) gfx_mode::$62 [134] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 to:gfx_mode::@23 gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 gfx_mode::@23 @@ -9817,7 +9814,7 @@ gfx_mode::@23: scope:[gfx_mode] from gfx_mode::@22 gfx_mode::@23 [138] if((byte) gfx_mode::j#1!=(byte) $10) goto gfx_mode::@23 to:gfx_mode::@25 gfx_mode::@25: scope:[gfx_mode] from gfx_mode::@23 gfx_mode::@24 gfx_mode::@25 gfx_mode::@33 - [139] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 + [139] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@25 to:gfx_mode::@26 gfx_mode::@26: scope:[gfx_mode] from gfx_mode::@25 [140] phi() @@ -10124,9 +10121,9 @@ form_mode::@16: scope:[form_mode] from form_mode::@15 [273] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (byte) 3 [274] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2) ← (byte) 3 [275] *((const nomodify byte*) DTV_CONTROL) ← (byte) 0 - [276] *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 - [277] *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL - [278] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 + [276] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 + [277] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL + [278] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 [279] *((const nomodify byte*) DTV_PLANEA_START_LO) ← (byte) 0 [280] *((const nomodify byte*) DTV_PLANEA_START_MI) ← >(const nomodify byte*) FORM_SCREEN [281] *((const nomodify byte*) DTV_PLANEA_START_HI) ← (byte) 0 @@ -10138,8 +10135,8 @@ form_mode::@1: scope:[form_mode] from form_mode::@1 form_mode::@16 [285] if((byte) form_mode::i#1!=(byte) $10) goto form_mode::@1 to:form_mode::@2 form_mode::@2: scope:[form_mode] from form_mode::@1 - [286] *((const nomodify byte*) BGCOL) ← (byte) 0 - [287] *((const nomodify byte*) BORDERCOL) ← (byte) 0 + [286] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0 + [287] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [288] (byte) form_mode::preset_current#0 ← *((const byte*) form_fields_val) to:form_mode::@3 form_mode::@3: scope:[form_mode] from form_mode::@19 form_mode::@2 form_mode::@6 @@ -10149,7 +10146,7 @@ form_mode::@3: scope:[form_mode] from form_mode::@19 form_mode::@2 form_mode::@ [289] (signed byte) form_cursor_count#21 ← phi( form_mode::@2/(signed byte) form_cursor_count#1 form_mode::@19/(signed byte) form_cursor_count#16 form_mode::@6/(signed byte) form_cursor_count#16 ) to:form_mode::@4 form_mode::@4: scope:[form_mode] from form_mode::@3 form_mode::@4 - [290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 + [290] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 to:form_mode::@5 form_mode::@5: scope:[form_mode] from form_mode::@4 [291] phi() @@ -13037,13 +13034,6 @@ Target platform is c64basic / MOS6502X :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label RASTER = $d012 - .label BORDERCOL = $d020 - .label BGCOL = $d021 - .label BGCOL1 = $d021 - .label BGCOL2 = $d022 - .label BGCOL3 = $d023 - .label BGCOL4 = $d024 .label VIC_CONTROL = $d011 .const VIC_ECM = $40 .const VIC_BMM = $20 @@ -13065,6 +13055,8 @@ Target platform is c64basic / MOS6502X .const PROCPORT_RAM_CHARROM = 1 // The address of the CHARGEN character set .label CHARGEN = $d000 + // The VIC-II MOS 6567/6569 + .label VICII = $d000 // Color Ram .label COLS = $d800 // The CIA#1: keyboard matrix, joystick #1/#2 @@ -13193,6 +13185,15 @@ Target platform is c64basic / MOS6502X .const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1 + .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24 + .const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16 + .const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18 // Number of form fields .const form_fields_cnt = $24 .label print_line_cursor = $36 @@ -13946,10 +13947,10 @@ gfx_mode: { jmp __b22 // gfx_mode::@22 __b22: - // [121] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [121] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Background colors lda #0 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // [122] (byte~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg0_hi asl @@ -13961,9 +13962,9 @@ gfx_mode: { lda form_vic_bg0_lo ora.z __55 sta.z __56 - // [124] *((const nomodify byte*) BGCOL1) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuz1 + // [124] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuz1 lda.z __56 - sta BGCOL1 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR // [125] (byte~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg1_hi asl @@ -13975,9 +13976,9 @@ gfx_mode: { lda form_vic_bg1_lo ora.z __57 sta.z __58 - // [127] *((const nomodify byte*) BGCOL2) ← (byte~) gfx_mode::$58 -- _deref_pbuc1=vbuz1 + // [127] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1) ← (byte~) gfx_mode::$58 -- _deref_pbuc1=vbuz1 lda.z __58 - sta BGCOL2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 // [128] (byte~) gfx_mode::$59 ← *((const nomodify byte*) form_vic_bg2_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg2_hi asl @@ -13989,9 +13990,9 @@ gfx_mode: { lda form_vic_bg2_lo ora.z __59 sta.z __60 - // [130] *((const nomodify byte*) BGCOL3) ← (byte~) gfx_mode::$60 -- _deref_pbuc1=vbuz1 + // [130] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2) ← (byte~) gfx_mode::$60 -- _deref_pbuc1=vbuz1 lda.z __60 - sta BGCOL3 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 // [131] (byte~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) << (byte) 4 -- vbuz1=_deref_pbuc1_rol_4 lda form_vic_bg3_hi asl @@ -14003,9 +14004,9 @@ gfx_mode: { lda form_vic_bg3_lo ora.z __61 sta.z __62 - // [133] *((const nomodify byte*) BGCOL4) ← (byte~) gfx_mode::$62 -- _deref_pbuc1=vbuz1 + // [133] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3) ← (byte~) gfx_mode::$62 -- _deref_pbuc1=vbuz1 lda.z __62 - sta BGCOL4 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 // [134] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 // DTV Palette lda form_dtv_palet @@ -14037,9 +14038,9 @@ gfx_mode: { jmp __b25 // gfx_mode::@25 __b25: - // [139] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 -- _deref_pbuc1_neq_vbuc2_then_la1 + // [139] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@25 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b25 // [140] phi from gfx_mode::@25 to gfx_mode::@26 [phi:gfx_mode::@25->gfx_mode::@26] __b26_from___b25: @@ -15076,17 +15077,17 @@ form_mode: { // DTV Graphics Mode lda #0 sta DTV_CONTROL - // [276] *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 + // [276] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 // VIC Graphics Mode lda #VIC_DEN|VIC_RSEL|3 - sta VIC_CONTROL - // [277] *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1 + // [277] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL -- _deref_pbuc1=vbuc2 lda #VIC_CSEL - sta VIC_CONTROL2 - // [278] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2 + // [278] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 // VIC Memory Pointers lda #(FORM_SCREEN&$3fff)/$40|(FORM_CHARSET&$3fff)/$400 - sta VIC_MEMORY + sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY // [279] *((const nomodify byte*) DTV_PLANEA_START_LO) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Plane A to FORM_SCREEN also lda #0 @@ -15123,13 +15124,13 @@ form_mode: { jmp __b2 // form_mode::@2 __b2: - // [286] *((const nomodify byte*) BGCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [286] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Screen colors lda #0 - sta BGCOL - // [287] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR + // [287] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // [288] (byte) form_mode::preset_current#0 ← *((const byte*) form_fields_val) -- vbuz1=_deref_pbuc1 lda form_fields_val sta.z preset_current @@ -15148,9 +15149,9 @@ form_mode: { jmp __b4 // form_mode::@4 __b4: - // [290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + // [290] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b4 // [291] phi from form_mode::@4 to form_mode::@5 [phi:form_mode::@4->form_mode::@5] __b5_from___b4: @@ -19025,7 +19026,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:5 [ gfx_mod Removing always clobbered register reg byte y as potential for zp[1]:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] -Statement [121] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [121] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a Statement [122] (byte~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$55 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$55 ] { } ) always clobbers reg byte a Statement [123] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$56 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$56 ] { } ) always clobbers reg byte a Statement [125] (byte~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$57 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$57 ] { } ) always clobbers reg byte a @@ -19035,7 +19036,7 @@ Statement [129] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$59 | *((const nomod Statement [131] (byte~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$61 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$61 ] { } ) always clobbers reg byte a Statement [132] (byte~) gfx_mode::$62 ← (byte~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] { } ) always clobbers reg byte a Statement [134] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a -Statement [139] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [139] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a Statement [149] *((const nomodify byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:12 [ gfx_mode::i#2 gfx_mode::i#1 ] Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a @@ -19066,17 +19067,17 @@ Statement [272] *((const nomodify byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_ Statement [273] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [274] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [275] *((const nomodify byte*) DTV_CONTROL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [276] *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [277] *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [278] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [276] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [277] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [278] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [279] *((const nomodify byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [280] *((const nomodify byte*) DTV_PLANEA_START_MI) ← >(const nomodify byte*) FORM_SCREEN [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [281] *((const nomodify byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [283] *((const nomodify byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:30 [ form_mode::i#2 form_mode::i#1 ] -Statement [286] *((const nomodify byte*) BGCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [287] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] { } ) always clobbers reg byte a +Statement [286] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [287] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [290] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] { } ) always clobbers reg byte a Statement [318] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#13 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a Statement [323] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] @@ -19369,7 +19370,7 @@ Statement [105] (byte~) gfx_mode::$84 ← (byte)(word~) gfx_mode::$48 [ keyboard Statement [110] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#11 ] { { get_vic_screen::idx#1 = get_vic_screen::idx#2 } { get_vic_screen::return#11 = get_vic_screen::return#5 } } ) always clobbers reg byte a Statement [111] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] { } ) always clobbers reg byte a Statement [114] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] { } ) always clobbers reg byte a reg byte y -Statement [121] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [121] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a Statement [122] (byte~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$55 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$55 ] { } ) always clobbers reg byte a Statement [123] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) [ keyboard_events_size#24 gfx_mode::$56 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$56 ] { } ) always clobbers reg byte a Statement [125] (byte~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$57 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$57 ] { } ) always clobbers reg byte a @@ -19379,7 +19380,7 @@ Statement [129] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$59 | *((const nomod Statement [131] (byte~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) << (byte) 4 [ keyboard_events_size#24 gfx_mode::$61 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$61 ] { } ) always clobbers reg byte a Statement [132] (byte~) gfx_mode::$62 ← (byte~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) [ keyboard_events_size#24 gfx_mode::$62 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$62 ] { } ) always clobbers reg byte a Statement [134] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a -Statement [139] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a +Statement [139] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@25 [ keyboard_events_size#24 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 ] { } ) always clobbers reg byte a Statement [149] *((const nomodify byte*) DTV_PALETTE + (byte) gfx_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) gfx_mode::i#2) [ keyboard_events_size#24 gfx_mode::i#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::i#2 ] { } ) always clobbers reg byte a Statement [163] if((byte) keyboard_event_scan::row_scan#0!=*((const byte*) keyboard_scan_values + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#106 keyboard_event_scan::row_scan#0 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a Statement [164] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8 [ keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] ( main:2::gfx_mode:15::keyboard_event_scan:141 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { keyboard_events_size#24 = keyboard_events_size#97 } } main:2::form_mode:13::form_control:292::keyboard_event_scan:372 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#106 keyboard_event_scan::keycode#1 ] { { form_control::return#0 = form_control::return#2 } { keyboard_events_size#47 = keyboard_events_size#97 } } ) always clobbers reg byte a @@ -19402,16 +19403,16 @@ Statement [272] *((const nomodify byte*) DTV_COLOR_BANK_HI) ← (byte) 0 [ form_ Statement [273] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2+(const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [274] *((byte*)(const nomodify struct MOS6526_CIA*) CIA2) ← (byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [275] *((const nomodify byte*) DTV_CONTROL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [276] *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [277] *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [278] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [276] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [277] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [278] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [279] *((const nomodify byte*) DTV_PLANEA_START_LO) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [280] *((const nomodify byte*) DTV_PLANEA_START_MI) ← >(const nomodify byte*) FORM_SCREEN [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [281] *((const nomodify byte*) DTV_PLANEA_START_HI) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a Statement [283] *((const nomodify byte*) DTV_PALETTE + (byte) form_mode::i#2) ← *((const byte*) DTV_PALETTE_DEFAULT + (byte) form_mode::i#2) [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_mode::i#2 ] { } ) always clobbers reg byte a -Statement [286] *((const nomodify byte*) BGCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [287] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a -Statement [290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] { } ) always clobbers reg byte a +Statement [286] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [287] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] { } ) always clobbers reg byte a +Statement [290] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] ( main:2::form_mode:13 [ keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_mode::preset_current#6 ] { } ) always clobbers reg byte a Statement [318] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#13 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a Statement [323] if((byte) 0!=*((byte*) print_str_at::str#2)) goto print_str_at::@2 [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a reg byte y Statement [325] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:269::print_str_at:319 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#0 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } main:2::form_mode:13::render_preset_name:303::print_str_at:319 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] { { render_preset_name::idx#1 = render_preset_name::idx#10 } { print_str_at::str#1 = render_preset_name::name#13 } } ) always clobbers reg byte a reg byte y @@ -20336,13 +20337,6 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels - .label RASTER = $d012 - .label BORDERCOL = $d020 - .label BGCOL = $d021 - .label BGCOL1 = $d021 - .label BGCOL2 = $d022 - .label BGCOL3 = $d023 - .label BGCOL4 = $d024 .label VIC_CONTROL = $d011 .const VIC_ECM = $40 .const VIC_BMM = $20 @@ -20364,6 +20358,8 @@ ASSEMBLER BEFORE OPTIMIZATION .const PROCPORT_RAM_CHARROM = 1 // The address of the CHARGEN character set .label CHARGEN = $d000 + // The VIC-II MOS 6567/6569 + .label VICII = $d000 // Color Ram .label COLS = $d800 // The CIA#1: keyboard matrix, joystick #1/#2 @@ -20492,6 +20488,15 @@ ASSEMBLER BEFORE OPTIMIZATION .const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1 + .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24 + .const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16 + .const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18 // Number of form fields .const form_fields_cnt = $24 .label print_line_cursor = 7 @@ -21083,10 +21088,10 @@ gfx_mode: { jmp __b22 // gfx_mode::@22 __b22: - // [121] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [121] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Background colors lda #0 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // [122] (byte~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg0_hi asl @@ -21095,8 +21100,8 @@ gfx_mode: { asl // [123] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg0_lo - // [124] *((const nomodify byte*) BGCOL1) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa - sta BGCOL1 + // [124] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR // [125] (byte~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg1_hi asl @@ -21105,8 +21110,8 @@ gfx_mode: { asl // [126] (byte~) gfx_mode::$58 ← (byte~) gfx_mode::$57 | *((const nomodify byte*) form_vic_bg1_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg1_lo - // [127] *((const nomodify byte*) BGCOL2) ← (byte~) gfx_mode::$58 -- _deref_pbuc1=vbuaa - sta BGCOL2 + // [127] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1) ← (byte~) gfx_mode::$58 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 // [128] (byte~) gfx_mode::$59 ← *((const nomodify byte*) form_vic_bg2_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg2_hi asl @@ -21115,8 +21120,8 @@ gfx_mode: { asl // [129] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$59 | *((const nomodify byte*) form_vic_bg2_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg2_lo - // [130] *((const nomodify byte*) BGCOL3) ← (byte~) gfx_mode::$60 -- _deref_pbuc1=vbuaa - sta BGCOL3 + // [130] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2) ← (byte~) gfx_mode::$60 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 // [131] (byte~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg3_hi asl @@ -21125,8 +21130,8 @@ gfx_mode: { asl // [132] (byte~) gfx_mode::$62 ← (byte~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg3_lo - // [133] *((const nomodify byte*) BGCOL4) ← (byte~) gfx_mode::$62 -- _deref_pbuc1=vbuaa - sta BGCOL4 + // [133] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3) ← (byte~) gfx_mode::$62 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 // [134] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 // DTV Palette lda form_dtv_palet @@ -21155,9 +21160,9 @@ gfx_mode: { jmp __b25 // gfx_mode::@25 __b25: - // [139] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 -- _deref_pbuc1_neq_vbuc2_then_la1 + // [139] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@25 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b25 // [140] phi from gfx_mode::@25 to gfx_mode::@26 [phi:gfx_mode::@25->gfx_mode::@26] __b26_from___b25: @@ -22087,17 +22092,17 @@ form_mode: { // DTV Graphics Mode lda #0 sta DTV_CONTROL - // [276] *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 + // [276] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 // VIC Graphics Mode lda #VIC_DEN|VIC_RSEL|3 - sta VIC_CONTROL - // [277] *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1 + // [277] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL -- _deref_pbuc1=vbuc2 lda #VIC_CSEL - sta VIC_CONTROL2 - // [278] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2 + // [278] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 // VIC Memory Pointers lda #(FORM_SCREEN&$3fff)/$40|(FORM_CHARSET&$3fff)/$400 - sta VIC_MEMORY + sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY // [279] *((const nomodify byte*) DTV_PLANEA_START_LO) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Plane A to FORM_SCREEN also lda #0 @@ -22131,13 +22136,13 @@ form_mode: { jmp __b2 // form_mode::@2 __b2: - // [286] *((const nomodify byte*) BGCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // [286] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Screen colors lda #0 - sta BGCOL - // [287] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR + // [287] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // [288] (byte) form_mode::preset_current#0 ← *((const byte*) form_fields_val) -- vbuz1=_deref_pbuc1 lda form_fields_val sta.z preset_current @@ -22156,9 +22161,9 @@ form_mode: { jmp __b4 // form_mode::@4 __b4: - // [290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + // [290] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b4 // [291] phi from form_mode::@4 to form_mode::@5 [phi:form_mode::@4->form_mode::@5] __b5_from___b4: @@ -26689,26 +26694,20 @@ Removing unreachable instruction jmp __b9 Removing unreachable instruction jmp __b14 Removing unreachable instruction jmp __b7 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [742] beq __b6 to bne -Fixing long branch [746] beq __b7 to bne -Fixing long branch [750] beq __b8 to bne -Fixing long branch [754] beq __b9 to bne -Fixing long branch [758] beq __b10 to bne -Fixing long branch [762] beq __b11 to bne -Fixing long branch [766] beq __b12 to bne -Fixing long branch [770] beq __b13 to bne -Fixing long branch [1335] bmi __b2 to bpl +Fixing long branch [746] beq __b6 to bne +Fixing long branch [750] beq __b7 to bne +Fixing long branch [754] beq __b8 to bne +Fixing long branch [758] beq __b9 to bne +Fixing long branch [762] beq __b10 to bne +Fixing long branch [766] beq __b11 to bne +Fixing long branch [770] beq __b12 to bne +Fixing long branch [774] beq __b13 to bne +Fixing long branch [1339] bmi __b2 to bpl FINAL SYMBOL TABLE (label) @1 (label) @begin (label) @end -(const nomodify byte*) BGCOL = (byte*) 53281 -(const nomodify byte*) BGCOL1 = (byte*) 53281 -(const nomodify byte*) BGCOL2 = (byte*) 53282 -(const nomodify byte*) BGCOL3 = (byte*) 53283 -(const nomodify byte*) BGCOL4 = (byte*) 53284 -(const nomodify byte*) BORDERCOL = (byte*) 53280 (const nomodify byte*) CHARGEN = (byte*) 53248 (const nomodify struct MOS6526_CIA*) CIA1 = (struct MOS6526_CIA*) 56320 (const nomodify struct MOS6526_CIA*) CIA2 = (struct MOS6526_CIA*) 56576 @@ -26844,6 +26843,15 @@ FINAL SYMBOL TABLE (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = (byte) 2 (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_B = (byte) 1 (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = (byte) 3 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = (byte) $21 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = (byte) $22 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = (byte) $23 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = (byte) $24 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = (byte) $20 +(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = (byte) $11 +(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = (byte) $16 +(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY = (byte) $18 +(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER = (byte) $12 (const nomodify dword) PLANE_8BPP_CHUNKY = (dword) $20000 (const nomodify dword) PLANE_BLANK = (dword) $38000 (const nomodify dword) PLANE_CHARSET8 = (dword) $3c000 @@ -26861,7 +26869,7 @@ FINAL SYMBOL TABLE (const byte) RADIX::DECIMAL = (number) $a (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 -(const nomodify byte*) RASTER = (byte*) 53266 +(const nomodify struct MOS6569_VICII*) VICII = (struct MOS6569_VICII*) 53248 (const nomodify byte*) VIC_BITMAP = (byte*) 24576 (const nomodify byte) VIC_BMM = (byte) $20 (const nomodify byte*) VIC_CHARSET_ROM = (byte*) 22528 @@ -28194,13 +28202,6 @@ Score: 10118890 :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels - .label RASTER = $d012 - .label BORDERCOL = $d020 - .label BGCOL = $d021 - .label BGCOL1 = $d021 - .label BGCOL2 = $d022 - .label BGCOL3 = $d023 - .label BGCOL4 = $d024 .label VIC_CONTROL = $d011 .const VIC_ECM = $40 .const VIC_BMM = $20 @@ -28222,6 +28223,8 @@ Score: 10118890 .const PROCPORT_RAM_CHARROM = 1 // The address of the CHARGEN character set .label CHARGEN = $d000 + // The VIC-II MOS 6567/6569 + .label VICII = $d000 // Color Ram .label COLS = $d800 // The CIA#1: keyboard matrix, joystick #1/#2 @@ -28350,6 +28353,15 @@ Score: 10118890 .const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = 3 .const OFFSET_STRUCT_MOS6526_CIA_PORT_B = 1 + .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = $22 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = $23 + .const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = $24 + .const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11 + .const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16 + .const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18 // Number of form fields .const form_fields_cnt = $24 .label print_line_cursor = 7 @@ -28930,11 +28942,11 @@ gfx_mode: { cmp.z cy bne __b19 // gfx_mode::@22 - // *BORDERCOL = 0 - // [121] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // VICII->BORDER_COLOR = 0 + // [121] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Background colors lda #0 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // *form_vic_bg0_hi*$10 // [122] (byte~) gfx_mode::$55 ← *((const nomodify byte*) form_vic_bg0_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg0_hi @@ -28945,9 +28957,9 @@ gfx_mode: { // *form_vic_bg0_hi*$10|*form_vic_bg0_lo // [123] (byte~) gfx_mode::$56 ← (byte~) gfx_mode::$55 | *((const nomodify byte*) form_vic_bg0_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg0_lo - // *BGCOL1 = *form_vic_bg0_hi*$10|*form_vic_bg0_lo - // [124] *((const nomodify byte*) BGCOL1) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa - sta BGCOL1 + // VICII->BG_COLOR = *form_vic_bg0_hi*$10|*form_vic_bg0_lo + // [124] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte~) gfx_mode::$56 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR // *form_vic_bg1_hi*$10 // [125] (byte~) gfx_mode::$57 ← *((const nomodify byte*) form_vic_bg1_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg1_hi @@ -28958,9 +28970,9 @@ gfx_mode: { // *form_vic_bg1_hi*$10|*form_vic_bg1_lo // [126] (byte~) gfx_mode::$58 ← (byte~) gfx_mode::$57 | *((const nomodify byte*) form_vic_bg1_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg1_lo - // *BGCOL2 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo - // [127] *((const nomodify byte*) BGCOL2) ← (byte~) gfx_mode::$58 -- _deref_pbuc1=vbuaa - sta BGCOL2 + // VICII->BG_COLOR1 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo + // [127] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1) ← (byte~) gfx_mode::$58 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 // *form_vic_bg2_hi*$10 // [128] (byte~) gfx_mode::$59 ← *((const nomodify byte*) form_vic_bg2_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg2_hi @@ -28971,9 +28983,9 @@ gfx_mode: { // *form_vic_bg2_hi*$10|*form_vic_bg2_lo // [129] (byte~) gfx_mode::$60 ← (byte~) gfx_mode::$59 | *((const nomodify byte*) form_vic_bg2_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg2_lo - // *BGCOL3 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo - // [130] *((const nomodify byte*) BGCOL3) ← (byte~) gfx_mode::$60 -- _deref_pbuc1=vbuaa - sta BGCOL3 + // VICII->BG_COLOR2 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo + // [130] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2) ← (byte~) gfx_mode::$60 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 // *form_vic_bg3_hi*$10 // [131] (byte~) gfx_mode::$61 ← *((const nomodify byte*) form_vic_bg3_hi) << (byte) 4 -- vbuaa=_deref_pbuc1_rol_4 lda form_vic_bg3_hi @@ -28984,9 +28996,9 @@ gfx_mode: { // *form_vic_bg3_hi*$10|*form_vic_bg3_lo // [132] (byte~) gfx_mode::$62 ← (byte~) gfx_mode::$61 | *((const nomodify byte*) form_vic_bg3_lo) -- vbuaa=vbuaa_bor__deref_pbuc1 ora form_vic_bg3_lo - // *BGCOL4 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo - // [133] *((const nomodify byte*) BGCOL4) ← (byte~) gfx_mode::$62 -- _deref_pbuc1=vbuaa - sta BGCOL4 + // VICII->BG_COLOR3 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo + // [133] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3) ← (byte~) gfx_mode::$62 -- _deref_pbuc1=vbuaa + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 // if(*form_dtv_palet==0) // [134] if(*((const nomodify byte*) form_dtv_palet)==(byte) 0) goto gfx_mode::@24 -- _deref_pbuc1_eq_0_then_la1 // DTV Palette @@ -29013,10 +29025,10 @@ gfx_mode: { bne __b23 // gfx_mode::@25 __b25: - // while(*RASTER!=$ff) - // [139] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto gfx_mode::@25 -- _deref_pbuc1_neq_vbuc2_then_la1 + // while(VICII->RASTER!=$ff) + // [139] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto gfx_mode::@25 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b25 // [140] phi from gfx_mode::@25 to gfx_mode::@26 [phi:gfx_mode::@25->gfx_mode::@26] // gfx_mode::@26 @@ -29879,20 +29891,20 @@ form_mode: { // DTV Graphics Mode lda #0 sta DTV_CONTROL - // *VIC_CONTROL = VIC_DEN|VIC_RSEL|3 - // [276] *((const nomodify byte*) VIC_CONTROL) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 + // VICII->CONTROL1 = VIC_DEN|VIC_RSEL|3 + // [276] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← (const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 // VIC Graphics Mode lda #VIC_DEN|VIC_RSEL|3 - sta VIC_CONTROL - // *VIC_CONTROL2 = VIC_CSEL - // [277] *((const nomodify byte*) VIC_CONTROL2) ← (const nomodify byte) VIC_CSEL -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1 + // VICII->CONTROL2 = VIC_CSEL + // [277] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (const nomodify byte) VIC_CSEL -- _deref_pbuc1=vbuc2 lda #VIC_CSEL - sta VIC_CONTROL2 - // *VIC_MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400)) - // [278] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2 + // VICII->MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400)) + // [278] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY) ← (byte)(word)(const nomodify byte*) FORM_SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) FORM_CHARSET&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 // VIC Memory Pointers lda #(FORM_SCREEN&$3fff)/$40|(FORM_CHARSET&$3fff)/$400 - sta VIC_MEMORY + sta VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY // *DTV_PLANEA_START_LO = < FORM_SCREEN // [279] *((const nomodify byte*) DTV_PLANEA_START_LO) ← (byte) 0 -- _deref_pbuc1=vbuc2 // DTV Plane A to FORM_SCREEN also @@ -29925,14 +29937,14 @@ form_mode: { cpx #$10 bne __b1 // form_mode::@2 - // *BGCOL = 0 - // [286] *((const nomodify byte*) BGCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 + // VICII->BG_COLOR = 0 + // [286] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 // Screen colors lda #0 - sta BGCOL - // *BORDERCOL = 0 - // [287] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 - sta BORDERCOL + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR + // VICII->BORDER_COLOR = 0 + // [287] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 + sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR // preset_current = *form_preset // [288] (byte) form_mode::preset_current#0 ← *((const byte*) form_fields_val) -- vbuz1=_deref_pbuc1 lda form_fields_val @@ -29947,10 +29959,10 @@ form_mode: { // form_mode::@3 // form_mode::@4 __b4: - // while(*RASTER!=$ff) - // [290] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto form_mode::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + // while(VICII->RASTER!=$ff) + // [290] if(*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)!=(byte) $ff) goto form_mode::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda #$ff - cmp RASTER + cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER bne __b4 // [291] phi from form_mode::@4 to form_mode::@5 [phi:form_mode::@4->form_mode::@5] // form_mode::@5 diff --git a/src/test/ref/c64dtv-gfxexplorer.sym b/src/test/ref/c64dtv-gfxexplorer.sym index 48e9e6bd3..1655c422d 100644 --- a/src/test/ref/c64dtv-gfxexplorer.sym +++ b/src/test/ref/c64dtv-gfxexplorer.sym @@ -1,12 +1,6 @@ (label) @1 (label) @begin (label) @end -(const nomodify byte*) BGCOL = (byte*) 53281 -(const nomodify byte*) BGCOL1 = (byte*) 53281 -(const nomodify byte*) BGCOL2 = (byte*) 53282 -(const nomodify byte*) BGCOL3 = (byte*) 53283 -(const nomodify byte*) BGCOL4 = (byte*) 53284 -(const nomodify byte*) BORDERCOL = (byte*) 53280 (const nomodify byte*) CHARGEN = (byte*) 53248 (const nomodify struct MOS6526_CIA*) CIA1 = (struct MOS6526_CIA*) 56320 (const nomodify struct MOS6526_CIA*) CIA2 = (struct MOS6526_CIA*) 56576 @@ -142,6 +136,15 @@ (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = (byte) 2 (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_B = (byte) 1 (const byte) OFFSET_STRUCT_MOS6526_CIA_PORT_B_DDR = (byte) 3 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = (byte) $21 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1 = (byte) $22 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2 = (byte) $23 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3 = (byte) $24 +(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = (byte) $20 +(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = (byte) $11 +(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = (byte) $16 +(const byte) OFFSET_STRUCT_MOS6569_VICII_MEMORY = (byte) $18 +(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER = (byte) $12 (const nomodify dword) PLANE_8BPP_CHUNKY = (dword) $20000 (const nomodify dword) PLANE_BLANK = (dword) $38000 (const nomodify dword) PLANE_CHARSET8 = (dword) $3c000 @@ -159,7 +162,7 @@ (const byte) RADIX::DECIMAL = (number) $a (const byte) RADIX::HEXADECIMAL = (number) $10 (const byte) RADIX::OCTAL = (number) 8 -(const nomodify byte*) RASTER = (byte*) 53266 +(const nomodify struct MOS6569_VICII*) VICII = (struct MOS6569_VICII*) 53248 (const nomodify byte*) VIC_BITMAP = (byte*) 24576 (const nomodify byte) VIC_BMM = (byte) $20 (const nomodify byte*) VIC_CHARSET_ROM = (byte*) 22528 diff --git a/src/test/ref/complex/clearscreen/clearscreen.asm b/src/test/ref/complex/clearscreen/clearscreen.asm index c64937c91..52340e361 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.asm +++ b/src/test/ref/complex/clearscreen/clearscreen.asm @@ -16,12 +16,12 @@ .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register .label IRQ_STATUS = $d019 diff --git a/src/test/ref/complex/clearscreen/clearscreen.log b/src/test/ref/complex/clearscreen/clearscreen.log index 60dfd77cf..6925dce87 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.log +++ b/src/test/ref/complex/clearscreen/clearscreen.log @@ -2204,14 +2204,14 @@ Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 Simplifying constant pointer cast (byte*) 53264 -Simplifying constant pointer cast (byte*) 53266 +Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53271 Simplifying constant pointer cast (byte*) 53276 Simplifying constant pointer cast (byte*) 53277 +Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53281 -Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53273 Simplifying constant pointer cast (byte*) 53274 @@ -4591,12 +4591,12 @@ Target platform is c64basic / MOS6502X .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register .label IRQ_STATUS = $d019 @@ -7581,12 +7581,12 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register .label IRQ_STATUS = $d019 @@ -10473,12 +10473,12 @@ Score: 1113354 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 // VIC II IRQ Status Register .label IRQ_STATUS = $d019 diff --git a/src/test/ref/complex/prebob/vogel-sprites.asm b/src/test/ref/complex/prebob/vogel-sprites.asm index 60982b95b..14faf0ee6 100644 --- a/src/test/ref/complex/prebob/vogel-sprites.asm +++ b/src/test/ref/complex/prebob/vogel-sprites.asm @@ -5,10 +5,10 @@ .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label D011 = $d011 .const VIC_RST8 = $80 .const VIC_DEN = $10 diff --git a/src/test/ref/complex/prebob/vogel-sprites.log b/src/test/ref/complex/prebob/vogel-sprites.log index 5a6584403..fdcef72ec 100644 --- a/src/test/ref/complex/prebob/vogel-sprites.log +++ b/src/test/ref/complex/prebob/vogel-sprites.log @@ -1525,10 +1525,10 @@ Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 Simplifying constant pointer cast (byte*) 53264 -Simplifying constant pointer cast (byte*) 53266 -Simplifying constant pointer cast (byte*) 53269 -Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53287 +Simplifying constant pointer cast (byte*) 53269 +Simplifying constant pointer cast (byte*) 53266 +Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (struct MOS6526_CIA*) 56320 Simplifying constant pointer cast (byte*) 253 @@ -3222,10 +3222,10 @@ Target platform is c64basic / MOS6502X .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label D011 = $d011 .const VIC_RST8 = $80 .const VIC_DEN = $10 @@ -5189,10 +5189,10 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label D011 = $d011 .const VIC_RST8 = $80 .const VIC_DEN = $10 @@ -7160,10 +7160,10 @@ Score: 74020 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label D011 = $d011 .const VIC_RST8 = $80 .const VIC_DEN = $10 diff --git a/src/test/ref/complex/spritescroller/spritescroller.asm b/src/test/ref/complex/spritescroller/spritescroller.asm index 6da9dda7d..9e5972184 100644 --- a/src/test/ref/complex/spritescroller/spritescroller.asm +++ b/src/test/ref/complex/spritescroller/spritescroller.asm @@ -7,9 +7,9 @@ .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register diff --git a/src/test/ref/complex/spritescroller/spritescroller.log b/src/test/ref/complex/spritescroller/spritescroller.log index bb0b2916b..92ac361c2 100644 --- a/src/test/ref/complex/spritescroller/spritescroller.log +++ b/src/test/ref/complex/spritescroller/spritescroller.log @@ -1811,9 +1811,9 @@ Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 Simplifying constant pointer cast (byte*) 53264 -Simplifying constant pointer cast (byte*) 53266 -Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53287 +Simplifying constant pointer cast (byte*) 53269 +Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 53273 @@ -3575,9 +3575,9 @@ Target platform is c64basic / MOS6502X .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register @@ -5486,9 +5486,9 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register @@ -7434,9 +7434,9 @@ Score: 159127 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register diff --git a/src/test/ref/complex/tetris/test-sprites.asm b/src/test/ref/complex/tetris/test-sprites.asm index adc18dd7b..1940aafcc 100644 --- a/src/test/ref/complex/tetris/test-sprites.asm +++ b/src/test/ref/complex/tetris/test-sprites.asm @@ -7,12 +7,12 @@ .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register diff --git a/src/test/ref/complex/tetris/test-sprites.log b/src/test/ref/complex/tetris/test-sprites.log index 9731dcbd1..444aec8c1 100644 --- a/src/test/ref/complex/tetris/test-sprites.log +++ b/src/test/ref/complex/tetris/test-sprites.log @@ -796,12 +796,12 @@ Inlining cast *((const nomodify byte*) SPRITES_ENABLE) ← (unumber)(number) $ff Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 -Simplifying constant pointer cast (byte*) 53266 +Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53271 Simplifying constant pointer cast (byte*) 53276 Simplifying constant pointer cast (byte*) 53277 -Simplifying constant pointer cast (byte*) 53287 +Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 53273 @@ -1691,12 +1691,12 @@ Target platform is c64basic / MOS6502X .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register @@ -2569,12 +2569,12 @@ ASSEMBLER BEFORE OPTIMIZATION .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register @@ -3549,12 +3549,12 @@ Score: 11662 .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .label VIC_CONTROL = $d011 .label D018 = $d018 // VIC II IRQ Status Register diff --git a/src/test/ref/complex/tetris/tetris.asm b/src/test/ref/complex/tetris/tetris.asm index bc387e802..37a87c210 100644 --- a/src/test/ref/complex/tetris/tetris.asm +++ b/src/test/ref/complex/tetris/tetris.asm @@ -10,17 +10,17 @@ .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d + .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 diff --git a/src/test/ref/complex/tetris/tetris.log b/src/test/ref/complex/tetris/tetris.log index 3f2f6556a..819e76c83 100644 --- a/src/test/ref/complex/tetris/tetris.log +++ b/src/test/ref/complex/tetris/tetris.log @@ -6436,17 +6436,17 @@ Inlining cast *((word*)(const nomodify struct MOS6581_SID*) SID+(const byte) OFF Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 -Simplifying constant pointer cast (byte*) 53266 +Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53271 Simplifying constant pointer cast (byte*) 53276 Simplifying constant pointer cast (byte*) 53277 +Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 53282 Simplifying constant pointer cast (byte*) 53283 Simplifying constant pointer cast (byte*) 53284 -Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53272 @@ -11630,17 +11630,17 @@ Target platform is c64basic / MOS6502X .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d + .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 @@ -16780,17 +16780,17 @@ ASSEMBLER BEFORE OPTIMIZATION .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d + .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 @@ -22127,17 +22127,17 @@ Score: 3348915 .const SPRITE_PTRS = $3f8 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c .label SPRITES_EXPAND_X = $d01d + .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL1 = $d021 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_ECM = $40 diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm index 604e0de38..75c94b6d9 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.asm @@ -7,10 +7,10 @@ .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_DEN = $10 diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log index e3994fdce..682b4b225 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log @@ -767,10 +767,10 @@ Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 Simplifying constant pointer cast (byte*) 53264 -Simplifying constant pointer cast (byte*) 53266 -Simplifying constant pointer cast (byte*) 53269 -Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53287 +Simplifying constant pointer cast (byte*) 53269 +Simplifying constant pointer cast (byte*) 53266 +Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53273 @@ -1644,10 +1644,10 @@ Target platform is c64basic / MOS6502X .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_DEN = $10 @@ -2691,10 +2691,10 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_DEN = $10 @@ -3778,10 +3778,10 @@ Score: 43606 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 - .label SPRITES_ENABLE = $d015 - .label BORDERCOL = $d020 .label SPRITES_COLS = $d027 + .label SPRITES_ENABLE = $d015 + .label RASTER = $d012 + .label BORDERCOL = $d020 .label VIC_CONTROL = $d011 .label D011 = $d011 .const VIC_DEN = $10 diff --git a/src/test/ref/scan-desire-problem.asm b/src/test/ref/scan-desire-problem.asm index 2d5b72615..f6fe30cb2 100644 --- a/src/test/ref/scan-desire-problem.asm +++ b/src/test/ref/scan-desire-problem.asm @@ -3,6 +3,7 @@ :BasicUpstart(main) .pc = $80d "Program" .label SPRITES_XMSB = $d010 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c @@ -12,7 +13,6 @@ .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label D018 = $d018 // The colors of the C64 .const BLACK = 0 diff --git a/src/test/ref/scan-desire-problem.log b/src/test/ref/scan-desire-problem.log index 061fc4272..b54d59604 100644 --- a/src/test/ref/scan-desire-problem.log +++ b/src/test/ref/scan-desire-problem.log @@ -630,6 +630,7 @@ Inlining cast *((const nomodify byte*) screen + (unumber~) draw_block::$7) ← ( Inlining cast *((const nomodify byte*) screen + (unumber~) draw_block::$9) ← (unumber)(number) 3 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53264 +Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53271 Simplifying constant pointer cast (byte*) 53276 @@ -639,7 +640,6 @@ Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 53282 Simplifying constant pointer cast (byte*) 53283 Simplifying constant pointer cast (byte*) 53284 -Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 8192 @@ -1373,6 +1373,7 @@ Target platform is c64basic / MOS6502X .pc = $80d "Program" // Global Constants & labels .label SPRITES_XMSB = $d010 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c @@ -1382,7 +1383,6 @@ Target platform is c64basic / MOS6502X .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label D018 = $d018 // The colors of the C64 .const BLACK = 0 @@ -2083,6 +2083,7 @@ ASSEMBLER BEFORE OPTIMIZATION .pc = $80d "Program" // Global Constants & labels .label SPRITES_XMSB = $d010 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c @@ -2092,7 +2093,6 @@ ASSEMBLER BEFORE OPTIMIZATION .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label D018 = $d018 // The colors of the C64 .const BLACK = 0 @@ -2899,6 +2899,7 @@ Score: 75497 .pc = $80d "Program" // Global Constants & labels .label SPRITES_XMSB = $d010 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_MC = $d01c @@ -2908,7 +2909,6 @@ Score: 75497 .label BGCOL2 = $d022 .label BGCOL3 = $d023 .label BGCOL4 = $d024 - .label SPRITES_COLS = $d027 .label D018 = $d018 // The colors of the C64 .const BLACK = 0 diff --git a/src/test/ref/signed-words.asm b/src/test/ref/signed-words.asm index 45d4c8004..d3a2640b1 100644 --- a/src/test/ref/signed-words.asm +++ b/src/test/ref/signed-words.asm @@ -4,11 +4,11 @@ .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .const WHITE = 1 .label SCREEN = $400 .label SPRITES_PTR = SCREEN+$3f8 diff --git a/src/test/ref/signed-words.log b/src/test/ref/signed-words.log index 8088a439a..297826dcd 100644 --- a/src/test/ref/signed-words.log +++ b/src/test/ref/signed-words.log @@ -499,11 +499,11 @@ Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53248 Simplifying constant pointer cast (byte*) 53249 Simplifying constant pointer cast (byte*) 53264 -Simplifying constant pointer cast (byte*) 53266 +Simplifying constant pointer cast (byte*) 53287 Simplifying constant pointer cast (byte*) 53269 Simplifying constant pointer cast (byte*) 53271 Simplifying constant pointer cast (byte*) 53277 -Simplifying constant pointer cast (byte*) 53287 +Simplifying constant pointer cast (byte*) 53266 Simplifying constant pointer cast (byte*) 1024 Simplifying constant integer cast $3f8 Simplifying constant pointer cast (byte*) 8192 @@ -1016,11 +1016,11 @@ Target platform is c64basic / MOS6502X .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .const WHITE = 1 .label SCREEN = $400 .label SPRITES_PTR = SCREEN+$3f8 @@ -1471,11 +1471,11 @@ ASSEMBLER BEFORE OPTIMIZATION .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .const WHITE = 1 .label SCREEN = $400 .label SPRITES_PTR = SCREEN+$3f8 @@ -2060,11 +2060,11 @@ Score: 6373 .label SPRITES_XPOS = $d000 .label SPRITES_YPOS = $d001 .label SPRITES_XMSB = $d010 - .label RASTER = $d012 + .label SPRITES_COLS = $d027 .label SPRITES_ENABLE = $d015 .label SPRITES_EXPAND_Y = $d017 .label SPRITES_EXPAND_X = $d01d - .label SPRITES_COLS = $d027 + .label RASTER = $d012 .const WHITE = 1 .label SCREEN = $400 .label SPRITES_PTR = SCREEN+$3f8