1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-26 03:32:23 +00:00

Slight changes to <mos6569.h>

This commit is contained in:
jespergravgaard 2020-04-29 08:09:45 +02:00
parent bc85b3c0d1
commit bf0dbfde63
22 changed files with 365 additions and 347 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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