1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-20 03:29:32 +00:00

Updated const names to VICII.

This commit is contained in:
jespergravgaard 2020-12-29 19:37:32 +01:00
parent 598e17b468
commit 581f055561
169 changed files with 5407 additions and 3972 deletions

File diff suppressed because it is too large Load Diff

View File

@ -19747,3 +19747,235 @@ ror {z1}
dex
bne !-
!e:
//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1
lda {z1}
ldx {z2}
ldy {c2},x
cmp {c1},y
bcs {la1}
//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1
lda {z1}
ldx {z2}
ldy {c2},x
cmp {c1},y
bcc {la1}
//FRAGMENT vbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuz2)
ldx {z2}
ldy {c2},x
ldx {c1},y
stx {z1}
//FRAGMENT _deref_pbuc1_lt_vbuaa_then_la1
ldy {c1}
sta $ff
cpy $ff
bcc {la1}
//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuaa)_then_la1
tax
lda {z1}
ldy {c2},x
cmp {c1},y
bcs {la1}
//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
lda {z1}
ldy {c2},x
cmp {c1},y
bcs {la1}
//FRAGMENT vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
lda {z1}
ldx {c2},y
cmp {c1},x
bcs {la1}
//FRAGMENT vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
ldx {z1}
ldy {c2},x
cmp {c1},y
bcs {la1}
//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
lda {z1}
ldy {c2},x
cmp {c1},y
bcc {la1}
//FRAGMENT vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
lda {z1}
ldx {c2},y
cmp {c1},x
bcc {la1}
//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
ldy {z1}
txa
ldx {c2},y
cmp {c1},x
bcc {la1}
//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
txa
ldy {c2},x
cmp {c1},y
bcc {la1}
//FRAGMENT vbuxx_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
txa
ldx {c2},y
cmp {c1},x
bcc {la1}
//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
ldx {z1}
tya
ldy {c2},x
cmp {c1},y
bcc {la1}
//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
tya
ldy {c2},x
cmp {c1},y
bcc {la1}
//FRAGMENT vbuyy_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
tya
ldx {c2},y
cmp {c1},x
bcc {la1}
//FRAGMENT vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
ldx {z1}
ldy {c2},x
lda {c1},y
//FRAGMENT vbuxx=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
ldx {z1}
ldy {c2},x
ldx {c1},y
//FRAGMENT vbuyy=pbuc1_derefidx_(pbuc2_derefidx_vbuz1)
ldy {z1}
ldx {c2},y
ldy {c1},x
//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
ldy {z1}
txa
ldx {c2},y
cmp {c1},x
bcs {la1}
//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
txa
ldy {c2},x
cmp {c1},y
bcs {la1}
//FRAGMENT vbuxx_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
txa
ldx {c2},y
cmp {c1},x
bcs {la1}
//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz1)_then_la1
ldx {z1}
tya
ldy {c2},x
cmp {c1},y
bcs {la1}
//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1
tya
ldy {c2},x
cmp {c1},y
bcs {la1}
//FRAGMENT vbuyy_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1
tya
ldx {c2},y
cmp {c1},x
bcs {la1}
//FRAGMENT _deref_pbuc1_lt_vbuxx_then_la1
lda {c1}
stx $ff
cmp $ff
bcc {la1}
//FRAGMENT _deref_pbuc1_lt_vbuyy_then_la1
ldx {c1}
sty $ff
cpx $ff
bcc {la1}
//FRAGMENT vbsxx=pbsc1_derefidx_vbuyy
ldx {c1},y
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz4
ldy {z4}
lda ({z3}),y
ldy {z2}
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuz3
ldy {z3}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuz3
ldy {z3}
stx $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuz3
sty $ff
ldy {z3}
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuaa
tay
lda ({z3}),y
ldy {z2}
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuaa
stx $ff
tay
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuaa
sty $ff
tay
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuxx
txa
tay
lda ({z3}),y
ldy {z2}
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuxx
sta $ff
txa
tay
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuyy=pbuz2_derefidx_vbuxx
sty $ff
txa
tay
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuyy
lda ({z3}),y
ldy {z2}
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy
stx $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
//FRAGMENT vbuz1=_deref_pbuc1_plus_2
lda {c1}
clc
adc #2
sta {z1}
//FRAGMENT vbuaa=_deref_pbuc1_plus_2
lda {c1}
clc
adc #2
//FRAGMENT vbuxx=_deref_pbuc1_plus_2
ldx {c1}
inx
inx
//FRAGMENT vbuyy=_deref_pbuc1_plus_2
ldy {c1}
iny
iny

View File

@ -11,8 +11,8 @@ void main() {
fill(SCREEN,40*25,$16);
*BORDER_COLOR = BLUE;
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
for (int i = 1; i < 180; i += 5) {
circle(160,100,i);

View File

@ -15,8 +15,8 @@ void main() {
fill(SCREEN,40*25,$16);
*BORDER_COLOR = BLUE;
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
circle(100,100,50);

View File

@ -12,8 +12,8 @@ byte next=0;
void main() {
*BORDER_COLOR = 0;
*BG_COLOR = 0;
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
bitmap_init(BITMAP);
bitmap_clear();
init_screen();

View File

@ -12,8 +12,8 @@ word next=0;
void main() {
*BORDER_COLOR = 0;
*BG_COLOR = 0;
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
bitmap_init(BITMAP, SCREEN);
bitmap_clear(PURPLE, WHITE);
do {

View File

@ -11,7 +11,7 @@ byte plots_per_frame[0x100];
void main() {
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*D018 = toD018(SCREEN, BITMAP);
init_irq();
word x = 0;
@ -40,7 +40,7 @@ void init_irq() {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -16,7 +16,7 @@ void main() {
sin16s_gen2(SINE, 512, -0x1001, 0x1001);
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*D018 = toD018(SCREEN, BITMAP);
init_irq();
word idx_x = 0;
@ -47,7 +47,7 @@ void init_irq() {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -16,7 +16,7 @@ void main() {
sin16s_gen2(SINE, 512, -0x1001, 0x1001);
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*D018 = toD018(SCREEN, BITMAP);
init_irq();
word idx_x = 0;
@ -56,7 +56,7 @@ void init_irq() {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -13,7 +13,7 @@ byte* COSTAB = SINTAB+0x40;
void main() {
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*D018 = toD018(SCREEN, BITMAP);
for( byte i=0, a=0; i!=8; i++, a+=32) {
bitmap_line( (word)COSTAB[a]+120, (word)SINTAB[a], (word)COSTAB[a+32]+120, (word)SINTAB[a+32]);

View File

@ -16,8 +16,8 @@ void main() {
*DTV_FEATURE = DTV_FEATURE_ENABLE;
// 8BPP Pixel Cell Mode
*DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY | DTV_BADLINE_OFF;
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3;
*VIC_CONTROL2 = VIC_MCM | VIC_CSEL;
*VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3;
*VICII_CONTROL2 = VICII_MCM | VICII_CSEL;
// Plane A: SCREEN
*DTV_PLANEA_START_LO = < SCREEN;
*DTV_PLANEA_START_MI = > SCREEN;
@ -36,7 +36,7 @@ void main() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)SCREEN/$4000); // Set VIC Bank
// VIC memory
*VIC_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((>(((word)SCREEN)&$3fff))/4);
*VICII_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((>(((word)SCREEN)&$3fff))/4);
// DTV Palette - Grey Tones
for(byte j : 0..$f) {
@ -59,14 +59,14 @@ void main() {
bne stabilize
}
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3;
*VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3;
*BORDER_COLOR = 0;
byte rst = $42;
while(*RASTER!=rst) {}
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
do {
rst = *RASTER;
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7);
*VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7);
*BORDER_COLOR = rst*$10;
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
} while (rst!=$f2);

View File

@ -14,8 +14,8 @@ void main() {
*DTV_FEATURE = DTV_FEATURE_ENABLE;
// 8BPP Pixel Cell Mode
*DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_COLORRAM_OFF | DTV_CHUNKY | DTV_BADLINE_OFF;
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3;
*VIC_CONTROL2 = VIC_MCM | VIC_CSEL;
*VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3;
*VICII_CONTROL2 = VICII_MCM | VICII_CSEL;
// Plane B: CHUNKY
*DTV_PLANEB_START_LO = < CHUNKY;
*DTV_PLANEB_START_MI = > CHUNKY;
@ -27,7 +27,7 @@ void main() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHUNKY/$4000); // Set VIC Bank
// VIC memory
*VIC_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((>(((word)CHUNKY)&$3fff))/4);
*VICII_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((>(((word)CHUNKY)&$3fff))/4);
// DTV Palette - Grey Tones
for(byte j : 0..$f) {
@ -50,14 +50,14 @@ void main() {
bne stabilize
}
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3;
*VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3;
*BORDER_COLOR = 0;
byte rst = $42;
while(*RASTER!=rst) {}
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
do {
rst = *RASTER;
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7);
*VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7);
*BORDER_COLOR = rst*$10;
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
} while (rst!=$f2);

View File

@ -22,15 +22,15 @@ void main() {
}
// VIC Screens
byte* const VIC_SCREEN0 = $4000;
byte* const VIC_SCREEN1 = $4400;
byte* const VIC_SCREEN2 = $4800;
byte* const VIC_SCREEN3 = $4c00;
byte* const VIC_SCREEN4 = $5000;
byte* const VICII_SCREEN0 = $4000;
byte* const VICII_SCREEN1 = $4400;
byte* const VICII_SCREEN2 = $4800;
byte* const VICII_SCREEN3 = $4c00;
byte* const VICII_SCREEN4 = $5000;
// VIC Charset from ROM
byte* const VIC_CHARSET_ROM = $5800;
byte* const VICII_CHARSET_ROM = $5800;
// VIC Bitmap
byte* const VIC_BITMAP = $6000;
byte* const VICII_BITMAP = $6000;
// 8BPP Chunky Bitmap (contains 8bpp pixels)
const dword PLANE_8BPP_CHUNKY = $20000;
@ -52,17 +52,17 @@ const dword PLANE_CHARSET8 = $3c000;
// Get plane address from a plane index (from the form)
dword get_plane(byte idx) {
if(idx==0) {
return (dword)VIC_SCREEN0;
return (dword)VICII_SCREEN0;
} else if(idx==1) {
return (dword)VIC_SCREEN1;
return (dword)VICII_SCREEN1;
} else if(idx==2) {
return (dword)VIC_SCREEN2;
return (dword)VICII_SCREEN2;
} else if(idx==3) {
return (dword)VIC_SCREEN3;
return (dword)VICII_SCREEN3;
} else if(idx==4) {
return (dword)VIC_BITMAP;
return (dword)VICII_BITMAP;
} else if(idx==5) {
return (dword)VIC_CHARSET_ROM;
return (dword)VICII_CHARSET_ROM;
} else if(idx==6) {
return (dword)PLANE_8BPP_CHUNKY;
} else if(idx==7) {
@ -80,33 +80,33 @@ dword get_plane(byte idx) {
} else if(idx==13) {
return (dword)PLANE_FULL;
}
return (dword)VIC_SCREEN0;
return (dword)VICII_SCREEN0;
}
// Get the VIC screen address from the screen index
byte* get_vic_screen(byte idx) {
byte* get_VICII_screen(byte idx) {
if(idx==0) {
return VIC_SCREEN0;
return VICII_SCREEN0;
} else if(idx==1) {
return VIC_SCREEN1;
return VICII_SCREEN1;
} else if(idx==2) {
return VIC_SCREEN2;
return VICII_SCREEN2;
} else if(idx==3) {
return VIC_SCREEN3;
return VICII_SCREEN3;
} else if(idx==4) {
return VIC_SCREEN4;
return VICII_SCREEN4;
}
return VIC_SCREEN0;
return VICII_SCREEN0;
}
// Get the VIC charset/bitmap address from the index
byte* get_vic_charset(byte idx) {
byte* get_VICII_charset(byte idx) {
if(idx==0) {
return VIC_CHARSET_ROM;
return VICII_CHARSET_ROM;
} else if(idx==1) {
return VIC_BITMAP;
return VICII_BITMAP;
}
return VIC_CHARSET_ROM;
return VICII_CHARSET_ROM;
}
// Screen containing the FORM
@ -278,18 +278,18 @@ byte* const form_b_step_hi = form_fields_val+20;
byte* const form_b_step_lo = form_fields_val+21;
byte* const form_b_mod_hi = form_fields_val+22;
byte* const form_b_mod_lo = form_fields_val+23;
byte* const form_vic_screen = form_fields_val+24;
byte* const form_vic_gfx = form_fields_val+25;
byte* const form_vic_cols = form_fields_val+26;
byte* const form_VICII_screen = form_fields_val+24;
byte* const form_VICII_gfx = form_fields_val+25;
byte* const form_VICII_cols = form_fields_val+26;
byte* const form_dtv_palet = form_fields_val+27;
byte* const form_vic_bg0_hi = form_fields_val+28;
byte* const form_vic_bg0_lo = form_fields_val+29;
byte* const form_vic_bg1_hi = form_fields_val+30;
byte* const form_vic_bg1_lo = form_fields_val+31;
byte* const form_vic_bg2_hi = form_fields_val+32;
byte* const form_vic_bg2_lo = form_fields_val+33;
byte* const form_vic_bg3_hi = form_fields_val+34;
byte* const form_vic_bg3_lo = form_fields_val+35;
byte* const form_VICII_bg0_hi = form_fields_val+28;
byte* const form_VICII_bg0_lo = form_fields_val+29;
byte* const form_VICII_bg1_hi = form_fields_val+30;
byte* const form_VICII_bg1_lo = form_fields_val+31;
byte* const form_VICII_bg2_hi = form_fields_val+32;
byte* const form_VICII_bg2_lo = form_fields_val+33;
byte* const form_VICII_bg3_hi = form_fields_val+34;
byte* const form_VICII_bg3_lo = form_fields_val+35;
// Change graphics mode to show the selected graphics mode
void gfx_mode() {
@ -317,19 +317,19 @@ void gfx_mode() {
*DTV_CONTROL = dtv_control;
// VIC Graphics Mode
byte vic_control = VIC_DEN | VIC_RSEL | 3;
byte VICII_control = VICII_DEN | VICII_RSEL | 3;
if(*form_ctrl_ecm!=0) {
vic_control = vic_control | VIC_ECM;
VICII_control = VICII_control | VICII_ECM;
}
if(*form_ctrl_bmm!=0) {
vic_control = vic_control | VIC_BMM;
VICII_control = VICII_control | VICII_BMM;
}
*VIC_CONTROL = vic_control;
byte vic_control2 = VIC_CSEL;
*VICII_CONTROL = VICII_control;
byte VICII_control2 = VICII_CSEL;
if(*form_ctrl_mcm!=0) {
vic_control2 = vic_control2 | VIC_MCM;
VICII_control2 = VICII_control2 | VICII_MCM;
}
*VIC_CONTROL2 = vic_control2;
*VICII_CONTROL2 = VICII_control2;
// Linear Graphics Plane A Counter
byte plane_a_offs = *form_a_start_hi*$10|*form_a_start_lo;
@ -353,25 +353,25 @@ void gfx_mode() {
// VIC Graphics Bank
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)VIC_SCREEN0/$4000); // Set VIC Bank
CIA2->PORT_A = %00000011 ^ (byte)((word)VICII_SCREEN0/$4000); // Set VIC Bank
// VIC memory
*VIC_MEMORY = (byte)(((word)get_vic_screen(*form_vic_screen)&$3fff)/$40) | ((>((word)get_vic_charset(*form_vic_gfx)&$3fff))/4);
*VICII_MEMORY = (byte)(((word)get_VICII_screen(*form_VICII_screen)&$3fff)/$40) | ((>((word)get_VICII_charset(*form_VICII_gfx)&$3fff))/4);
// VIC Colors
byte* vic_colors = get_vic_screen(*form_vic_cols);
byte* VICII_colors = get_VICII_screen(*form_VICII_cols);
byte* col=COLS;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*col++ = *vic_colors++;
*col++ = *VICII_colors++;
}
}
// Background colors
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;
VICII->BG_COLOR = *form_VICII_bg0_hi*$10|*form_VICII_bg0_lo;
VICII->BG_COLOR1 = *form_VICII_bg1_hi*$10|*form_VICII_bg1_lo;
VICII->BG_COLOR2 = *form_VICII_bg2_hi*$10|*form_VICII_bg2_lo;
VICII->BG_COLOR3 = *form_VICII_bg3_hi*$10|*form_VICII_bg3_lo;
// DTV Palette
if(*form_dtv_palet==0) {
@ -407,7 +407,7 @@ void gfx_init() {
gfx_init_screen3();
gfx_init_screen4();
gfx_init_charset();
gfx_init_vic_bitmap();
gfx_init_VICII_bitmap();
gfx_init_plane_8bppchunky();
gfx_init_plane_charset8();
gfx_init_plane_horisontal();
@ -421,7 +421,7 @@ void gfx_init() {
void gfx_init_charset() {
*PROCPORT = $32;
byte* chargen = CHARGEN;
byte* charset = VIC_CHARSET_ROM;
byte* charset = VICII_CHARSET_ROM;
for(byte c: 0..$ff) {
for( byte l: 0..7) {
*charset++ = *chargen++;
@ -432,7 +432,7 @@ void gfx_init_charset() {
// Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos)
void gfx_init_screen0() {
byte* ch=VIC_SCREEN0;
byte* ch=VICII_SCREEN0;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*ch++ = (cy&$f)*$10|(cx&$f);
@ -442,7 +442,7 @@ void gfx_init_screen0() {
// Initialize VIC screen 1 ( value is %0000cccc where cccc is (x+y mod $f))
void gfx_init_screen1() {
byte* ch=VIC_SCREEN1;
byte* ch=VICII_SCREEN1;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*ch++ = (cx+cy)&$f;
@ -452,7 +452,7 @@ void gfx_init_screen1() {
// Initialize VIC screen 2 ( value is %ccccrrrr where cccc is (x+y mod $f) and rrrr is %1111-%cccc)
void gfx_init_screen2() {
byte* ch=VIC_SCREEN2;
byte* ch=VICII_SCREEN2;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
byte col = (cx+cy)&$f;
@ -464,7 +464,7 @@ void gfx_init_screen2() {
// Initialize VIC screen 3 ( value is %00xx00yy where xx is xpos and yy is ypos
void gfx_init_screen3() {
byte* ch=VIC_SCREEN3;
byte* ch=VICII_SCREEN3;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*ch++ = (cx&3)*$10|(cy&3);
@ -474,7 +474,7 @@ void gfx_init_screen3() {
// Initialize VIC screen 4 - all chars are 00
void gfx_init_screen4() {
byte* ch=VIC_SCREEN4;
byte* ch=VICII_SCREEN4;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*ch++ = 0;
@ -483,9 +483,9 @@ void gfx_init_screen4() {
}
// Initialize VIC bitmap
void gfx_init_vic_bitmap() {
void gfx_init_VICII_bitmap() {
// Draw some lines on the bitmap
bitmap_init(VIC_BITMAP);
bitmap_init(VICII_BITMAP);
bitmap_clear();
byte lines_x[] = { $00, $ff, $ff, $00, $00, $80, $ff, $80, $00, $80 };
byte lines_y[] = { $00, $00, $c7, $c7, $00, $00, $64, $c7, $64, $00 };
@ -649,8 +649,8 @@ void form_mode() {
// DTV Graphics Mode
*DTV_CONTROL = 0;
// VIC Graphics Mode
VICII->CONTROL1 = VIC_DEN|VIC_RSEL|3;
VICII->CONTROL2 = VIC_CSEL;
VICII->CONTROL1 = VICII_DEN|VICII_RSEL|3;
VICII->CONTROL2 = VICII_CSEL;
// VIC Memory Pointers
VICII->MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400));
// DTV Plane A to FORM_SCREEN also

View File

@ -55,10 +55,10 @@ void menu() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL;
*VICII_CONTROL = VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_CSEL;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - default
for(byte i : 0..$f) {
DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i];
@ -202,10 +202,10 @@ void mode_stdchar() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL;
*VICII_CONTROL = VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_CSEL;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - default
for(byte i : 0..$f) {
DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i];
@ -253,10 +253,10 @@ void mode_ecmchar() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|VIC_ECM|3;
*VIC_CONTROL2 = VIC_CSEL;
*VICII_CONTROL = VICII_DEN|VICII_RSEL|VICII_ECM|3;
*VICII_CONTROL2 = VICII_CSEL;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - default
for(byte i : 0..$f) {
DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i];
@ -309,10 +309,10 @@ void mode_mcchar() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL|VIC_MCM;
*VICII_CONTROL = VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_CSEL|VICII_MCM;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - default
for(byte i : 0..$f) {
DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i];
@ -355,10 +355,10 @@ void mode_stdbitmap() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)BITMAP/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL;
*VICII_CONTROL = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_CSEL;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400));
// DTV Palette - default
for(byte i : 0..$f) {
DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i];
@ -411,10 +411,10 @@ void mode_hicolstdchar() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL;
*VICII_CONTROL = VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_CSEL;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - Grey Tones
for(byte i : 0..$f) {
DTV_PALETTE[i] = i;
@ -464,10 +464,10 @@ void mode_hicolecmchar() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|VIC_ECM|3;
*VIC_CONTROL2 = VIC_CSEL;
*VICII_CONTROL = VICII_DEN|VICII_RSEL|VICII_ECM|3;
*VICII_CONTROL2 = VICII_CSEL;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - Grey Tones
for(byte i : 0..$f) {
DTV_PALETTE[i] = i;
@ -520,10 +520,10 @@ void mode_hicolmcchar() {
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
CIA2->PORT_A = %00000011 ^ (byte)((word)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL|VIC_MCM;
*VICII_CONTROL = VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_CSEL|VICII_MCM;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
*VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - Grey Tones
for(byte i : 0..$f) {
DTV_PALETTE[i] = i;
@ -564,8 +564,8 @@ void mode_twoplanebitmap() {
dtv_control = DTV_HIGHCOLOR | DTV_LINEAR;
*DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR;
// VIC Graphics Mode
*VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL;
*VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_CSEL;
// Linear Graphics Plane A Counter
*DTV_PLANEA_START_LO = <PLANEA;
*DTV_PLANEA_START_MI = >PLANEA;
@ -634,8 +634,8 @@ void mode_sixsfred() {
dtv_control = DTV_HIGHCOLOR | DTV_LINEAR;
*DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR;
// VIC Graphics Mode
*VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_MCM|VIC_CSEL;
*VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_MCM|VICII_CSEL;
// Linear Graphics Plane A Counter
*DTV_PLANEA_START_LO = <PLANEA;
*DTV_PLANEA_START_MI = >PLANEA;
@ -700,8 +700,8 @@ void mode_sixsfred2() {
dtv_control = DTV_LINEAR;
*DTV_CONTROL = DTV_LINEAR;
// VIC Graphics Mode
*VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_MCM|VIC_CSEL;
*VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_MCM|VICII_CSEL;
// Linear Graphics Plane A Counter
*DTV_PLANEA_START_LO = <PLANEA;
*DTV_PLANEA_START_MI = >PLANEA;
@ -771,8 +771,8 @@ void mode_8bpppixelcell() {
dtv_control = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY;
*DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY;
// VIC Graphics Mode
*VIC_CONTROL = VIC_ECM|VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_MCM|VIC_CSEL;
*VICII_CONTROL = VICII_ECM|VICII_DEN|VICII_RSEL|3;
*VICII_CONTROL2 = VICII_MCM|VICII_CSEL;
// Linear Graphics Plane A Counter
*DTV_PLANEA_START_LO = <PLANEA;
*DTV_PLANEA_START_MI = >PLANEA;
@ -839,8 +839,8 @@ void mode_8bppchunkybmm() {
dtv_control = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY | DTV_COLORRAM_OFF;
*DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY | DTV_COLORRAM_OFF;
// VIC Graphics Mode
*VIC_CONTROL = VIC_ECM | VIC_DEN | VIC_RSEL | 3;
*VIC_CONTROL2 = VIC_MCM | VIC_CSEL;
*VICII_CONTROL = VICII_ECM | VICII_DEN | VICII_RSEL | 3;
*VICII_CONTROL2 = VICII_MCM | VICII_CSEL;
// Linear Graphics Plane B Counter
*DTV_PLANEB_START_LO = < < PLANEB;
*DTV_PLANEB_START_MI = > < PLANEB;

View File

@ -290,9 +290,9 @@ void setupRasterIrq(unsigned int raster, void()* irqRoutine) {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
if(raster<0x100) {
*VIC_CONTROL &=0x7f;
*VICII_CONTROL &=0x7f;
} else {
*VIC_CONTROL |=0x80;
*VICII_CONTROL |=0x80;
}
*RASTER = <raster;
// Enable Raster Interrupt

View File

@ -39,7 +39,7 @@ void main() {
// Initialize the program
void init() {
*D011 = VIC_DEN | VIC_RSEL | 3;
*D011 = VICII_DEN | VICII_RSEL | 3;
// Initialize the multiplexer
plexInit(SCREEN);
// Set the sprite pointers & initial positions
@ -88,7 +88,7 @@ void loop() {
angle += 3;
*BORDER_COLOR = BLACK;
// Sort the sprites by y-position
while((*D011&VIC_RST8)!=0) {}
while((*D011&VICII_RST8)!=0) {}
// Show the sprites
for( char i: 0..PLEX_COUNT-1) {
*BORDER_COLOR = BLACK;

View File

@ -50,7 +50,7 @@ void main() {
bitmap_clear(BLACK, WHITE);
vicSelectGfxBank(BITMAP_SCREEN);
*D018 = toD018(BITMAP_SCREEN, BITMAP_GRAPHICS);
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
char angle = 0;
while(true) {

View File

@ -71,7 +71,7 @@ void main() {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to 0x00
*VIC_CONTROL &=0x7f;
*VICII_CONTROL &=0x7f;
*RASTER = 0x28;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -45,7 +45,7 @@ __align(0x40) char* screen_lines_2[PLAYFIELD_LINES];
void render_init() {
vicSelectGfxBank(PLAYFIELD_CHARSET);
// Enable Extended Background Color Mode
*D011 = VIC_ECM | VIC_DEN | VIC_RSEL | 3;
*D011 = VICII_ECM | VICII_DEN | VICII_RSEL | 3;
*BORDER_COLOR = BLACK;
*BG_COLOR = BLACK;
*BG_COLOR1 = PIECES_COLORS_1[0];

View File

@ -43,7 +43,7 @@ void sprites_irq_init() {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line
*VIC_CONTROL &=0x7f;
*VICII_CONTROL &=0x7f;
*RASTER = IRQ_RASTER_FIRST;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -9,7 +9,7 @@
char* const RASTER = 0xd012;
char* const VIC_MEMORY = 0xd018;
char* const VICII_MEMORY = 0xd018;
char* const SCREEN = 0x0400;
char* const BG_COLOR = 0xd021;
char* const COLS = 0xd800;
@ -20,7 +20,7 @@ char MESSAGE[] = "hello world!";
void main() {
// Initialize screen memory
*VIC_MEMORY = 0x14;
*VICII_MEMORY = 0x14;
// Init screen/colors
memset(SCREEN, ' ', 40*25);
memset(COLS, WHITE, 40*25);

View File

@ -11,8 +11,8 @@ char lines_cnt = 8;
void main() {
VICII->BORDER_COLOR = 0;
VICII->BG_COLOR = 0;
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*VIC_MEMORY = (char)((((unsigned int)SCREEN&$3fff)/$40)|(((unsigned int)BITMAP&$3fff)/$400));
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
*VICII_MEMORY = (char)((((unsigned int)SCREEN&$3fff)/$40)|(((unsigned int)BITMAP&$3fff)/$400));
bitmap_init(BITMAP);
bitmap_clear();
init_screen();

View File

@ -12,7 +12,7 @@ const char COLOR_BLACK = 0x00;
static unsigned char XSize, YSize;
void main() {
*VIC_MEMORY = 0x17;
*VICII_MEMORY = 0x17;
screensize(&XSize, &YSize);
MakeNiceScreen();
while(!kbhit()) {}

View File

@ -27,7 +27,7 @@ void main() {
__interrupt(hardware_clobber) void irq_bottom_1() {
VICII->BORDER_COLOR = WHITE;
// Set screen height to 24 lines - this is done after the border should have started drawing - so it wont start
VICII->CONTROL1 &= ($ff^VIC_RSEL);
VICII->CONTROL1 &= ($ff^VICII_RSEL);
// Acknowledge the IRQ
VICII->IRQ_STATUS = IRQ_RASTER;
// Trigger IRQ 2 at line $fd
@ -40,7 +40,7 @@ __interrupt(hardware_clobber) void irq_bottom_1() {
__interrupt(hardware_clobber) void irq_bottom_2() {
VICII->BORDER_COLOR = WHITE;
// Set screen height back to 25 lines (preparing for the next screen)
VICII->CONTROL1 |= VIC_RSEL;
VICII->CONTROL1 |= VICII_RSEL;
// Acknowledge the IRQ
VICII->IRQ_STATUS = IRQ_RASTER;
// Trigger IRQ 1 at line $fa

View File

@ -28,7 +28,7 @@ void main() {
// Initialize the program
void init() {
*D011 = VIC_DEN | VIC_RSEL | 3;
*D011 = VICII_DEN | VICII_RSEL | 3;
// Initialize the multiplexer
plexInit(SCREEN);
// Set the x-positions & pointers
@ -63,7 +63,7 @@ void loop() {
(VICII->BORDER_COLOR)++;
plexSort();
VICII->BORDER_COLOR = BLACK;
while((*D011&VIC_RST8)!=0) {}
while((*D011&VICII_RST8)!=0) {}
// Show the sprites
for( char ss: 0..PLEX_COUNT-1) {
VICII->BORDER_COLOR = BLACK;

View File

@ -21,7 +21,7 @@ void main() {
VICII->BG_COLOR = VICII->BG_COLOR1 = DARK_GREY;
VICII->BG_COLOR2 = BLACK;
*D018 = toD018(SCREEN, LOGO);
*D016 = VIC_MCM;
*D016 = VICII_MCM;
memset(SCREEN, BLACK, 1000);
memset(COLS, WHITE|8, 1000);
for(char ch: 0..239) {
@ -50,7 +50,7 @@ void loop() {
void render_logo(signed int xpos) {
char logo_idx;
char screen_idx;
*D016 = VIC_MCM|((char)xpos&7);
*D016 = VICII_MCM|((char)xpos&7);
signed char x_char = (signed char)(xpos/8);
char line = 0;
if(xpos<0) {

View File

@ -15,7 +15,7 @@ void main() {
VICII->BG_COLOR = VICII->BG_COLOR1 = DARK_GREY;
VICII->BG_COLOR2 = BLACK;
*D018 = toD018(SCREEN, LOGO);
*D016 = VIC_MCM | VIC_CSEL;
*D016 = VICII_MCM | VICII_CSEL;
memset(SCREEN, BLACK, 40*25);
memset(COLS, WHITE|8, 40*25);
for(char ch: 0..239) {

View File

@ -23,9 +23,9 @@ void main() {
// Disable kernal & basic
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
vicSelectGfxBank(SCREEN);
*D016 = VIC_CSEL;
*D016 = VICII_CSEL;
*D018 = toD018(SCREEN, BITMAP);
bitmap_init(BITMAP, SCREEN);

View File

@ -1,7 +1,7 @@
// Tests what error message an accidental float gives
char* VIC_MEMORY = 0xd018;
char* VICII_MEMORY = 0xd018;
void main() {
*VIC_MEMORY = 0.14;
*VICII_MEMORY = 0.14;
}

View File

@ -4,8 +4,8 @@
unsigned int entities[NUM_ENTITIES];
char * const VIC_RASTER = 0xd012;
char * const VIC_BG_COLOR = 0xd020;
char * const VICII_RASTER = 0xd012;
char * const VICII_BG_COLOR = 0xd020;
char * const SCREEN = 0x0400;
void main() {
@ -14,8 +14,8 @@ void main() {
while(1) {
// Wait for raster refresh
while(*VIC_RASTER!=0xff) ;
*VIC_BG_COLOR = 0;
while(*VICII_RASTER!=0xff) ;
*VICII_BG_COLOR = 0;
// Move the entities
char * line = SCREEN;
for(char i=0;i<NUM_ENTITIES;i++) {
@ -32,7 +32,7 @@ void main() {
// Next line
line +=40;
}
*VIC_BG_COLOR = 15;
*VICII_BG_COLOR = 15;
}

View File

@ -10,8 +10,8 @@ struct Entity {
struct Entity entities[NUM_ENTITIES];
char * const VIC_RASTER = 0xd012;
char * const VIC_BG_COLOR = 0xd020;
char * const VICII_RASTER = 0xd012;
char * const VICII_BG_COLOR = 0xd020;
char * const SCREEN = 0x0400;
void main() {
@ -29,8 +29,8 @@ void main() {
while(1) {
// Wait for raster refresh
while(*VIC_RASTER!=0xff) ;
*VIC_BG_COLOR = 0;
while(*VICII_RASTER!=0xff) ;
*VICII_BG_COLOR = 0;
// Move the entities
char * line = SCREEN;
for(char i=0;i<NUM_ENTITIES;i++) {
@ -48,7 +48,7 @@ void main() {
// Next line
line +=40;
}
*VIC_BG_COLOR = 15;
*VICII_BG_COLOR = 15;
}

View File

@ -9,7 +9,7 @@ void main() {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -3,7 +3,7 @@
void()** const KERNEL_IRQ = $0314;
void()** const HARDWARE_IRQ = $fffe;
byte* const RASTER = $d012;
byte* const VIC_CONTROL = $d011;
byte* const VICII_CONTROL = $d011;
byte* const IRQ_STATUS = $d019;
byte* const IRQ_ENABLE = $d01a;
const byte IRQ_RASTER = %00000001;
@ -37,7 +37,7 @@ void main() {
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -5,7 +5,7 @@
void()** const KERNEL_IRQ = $0314;
void()** const HARDWARE_IRQ = $fffe;
byte* const RASTER = $d012;
byte* const VIC_CONTROL = $d011;
byte* const VICII_CONTROL = $d011;
byte* const IRQ_STATUS = $d019;
byte* const IRQ_ENABLE = $d01a;
const byte IRQ_RASTER = %00000001;
@ -39,7 +39,7 @@ void main() {
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -3,7 +3,7 @@
void()** const KERNEL_IRQ = $0314;
void()** const HARDWARE_IRQ = $fffe;
byte* const RASTER = $d012;
byte* const VIC_CONTROL = $d011;
byte* const VICII_CONTROL = $d011;
byte* const IRQ_STATUS = $d019;
byte* const IRQ_ENABLE = $d01a;
const byte IRQ_RASTER = %00000001;
@ -37,7 +37,7 @@ void main() {
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -8,7 +8,7 @@ void main() {
// Disable CIA 1 Timer IRQ
CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $60
*VIC_CONTROL &=$7f;
*VICII_CONTROL &=$7f;
*RASTER = $60;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;
@ -19,8 +19,8 @@ void main() {
asm { cli }
}
byte * const VIC_BASE = $D000;
const byte VIC_SIZE = 48;
byte * const VICII_BASE = $D000;
const byte VICII_SIZE = 48;
const byte IRQ_CHANGE_NEXT = $7f;
byte IRQ_CHANGE_IDX[] = { $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT, $20, $21, IRQ_CHANGE_NEXT };
@ -33,10 +33,10 @@ __interrupt void table_driven_irq() {
byte idx = IRQ_CHANGE_IDX[irq_idx];
byte val = IRQ_CHANGE_VAL[irq_idx];
irq_idx++;
if (idx < VIC_SIZE) {
VIC_BASE[idx] = val;
} else if (idx < VIC_SIZE + 8) {
SCREEN[idx + $3f8 - VIC_SIZE] = val;
if (idx < VICII_SIZE) {
VICII_BASE[idx] = val;
} else if (idx < VICII_SIZE + 8) {
SCREEN[idx + $3f8 - VICII_SIZE] = val;
} else {
*IRQ_STATUS = IRQ_RASTER;
*RASTER = val;

View File

@ -2,7 +2,7 @@
void()** const KERNEL_IRQ = $0314;
byte* const RASTER = $d012;
byte* const VIC_CONTROL = $d011;
byte* const VICII_CONTROL = $d011;
byte* const IRQ_STATUS = $d019;
byte* const IRQ_ENABLE = $d01a;
const byte IRQ_RASTER = %00000001;
@ -21,7 +21,7 @@ void main() {
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -2,7 +2,7 @@
void()** const KERNEL_IRQ = $0314;
byte* const RASTER = $d012;
byte* const VIC_CONTROL = $d011;
byte* const VICII_CONTROL = $d011;
byte* const IRQ_STATUS = $d019;
byte* const IRQ_ENABLE = $d01a;
const byte IRQ_RASTER = %00000001;
@ -18,7 +18,7 @@ void main() {
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $0fd
*VIC_CONTROL &=$7f;
*VICII_CONTROL &=$7f;
*RASTER = $fd;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -2,7 +2,7 @@
void()** const KERNEL_IRQ = $0314;
byte* const RASTER = $d012;
byte* const VIC_CONTROL = $d011;
byte* const VICII_CONTROL = $d011;
byte* const IRQ_STATUS = $d019;
byte* const IRQ_ENABLE = $d01a;
const byte IRQ_RASTER = %00000001;
@ -21,7 +21,7 @@ void main() {
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*VICII_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -3,7 +3,7 @@
void()** const KERNEL_IRQ = $0314;
byte* const RASTER = $d012;
byte* const VIC_CONTROL = $d011;
byte* const VICII_CONTROL = $d011;
byte* const IRQ_STATUS = $d019;
byte* const IRQ_ENABLE = $d01a;
const byte IRQ_RASTER = %00000001;
@ -18,7 +18,7 @@ void main() {
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $0fd
*VIC_CONTROL &=$7f;
*VICII_CONTROL &=$7f;
*RASTER = $fd;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;

View File

@ -35,7 +35,7 @@ void main() {
// Disable kernal & basic
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3;
vicSelectGfxBank(SCREEN);
*D018 = toD018(SCREEN, BITMAP);
bitmap_init(BITMAP);

View File

@ -122,23 +122,23 @@ int main (void)
tmp = block & 0xFC;
tmp |= (char)((((unsigned int)SCREEN1) >> 14) ^ 0x03);
CIA2->PORT_A = tmp;
v = *VIC_MEMORY;
v = *VICII_MEMORY;
/* Run the demo until a key was hit */
while (count) {
/* Build page 1, then make it visible */
doplasma ((char*)SCREEN1);
*VIC_MEMORY = PAGE1;
*VICII_MEMORY = PAGE1;
/* Build page 2, then make it visible */
doplasma ((char*)SCREEN2);
*VIC_MEMORY = PAGE2;
*VICII_MEMORY = PAGE2;
/* Count frames */
--count;
}
*VIC_MEMORY = v;
*VICII_MEMORY = v;
CIA2->PORT_A = block;
/* Reset screen colors */

View File

@ -23,7 +23,7 @@ void main() {
// Initialize the program
void init() {
*D011 = VIC_DEN | VIC_RSEL | 3;
*D011 = VICII_DEN | VICII_RSEL | 3;
// Initialize the multiplexer
plexInit(SCREEN);
// Set the x-positions & pointers
@ -44,7 +44,7 @@ void init() {
*IRQ_ENABLE = IRQ_RASTER;
*IRQ_STATUS = IRQ_RASTER;
*KERNEL_IRQ = &plex_irq;
*VIC_CONTROL &= 0x7f;
*VICII_CONTROL &= 0x7f;
*RASTER = 0x0;
asm { cli }
}

View File

@ -1,5 +1,5 @@
// Generate a charset based on a 5x3 pattern stored in 2 bytes
byte* VIC_MEMORY = $d018;
byte* VICII_MEMORY = $d018;
byte* SCREEN = $400;
byte* CHARSET = $3000;
@ -13,7 +13,7 @@ void main() {
gen_char3(charset, charset_spec_row[c]);
charset = charset+8;
}
*VIC_MEMORY = (byte)(((word)SCREEN/$40)|((word)CHARSET/$400));
*VICII_MEMORY = (byte)(((word)SCREEN/$40)|((word)CHARSET/$400));
}
// Generate one 5x3 character from a 16-bit char spec

View File

@ -1,7 +1,7 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label CHARSET = $3000
main: {
@ -47,7 +47,7 @@ sr2:rol charset_spec_row_hi
dec c
bne b2
lda #SCREEN/$40|CHARSET/$400
sta VIC_MEMORY
sta VICII_MEMORY
rts
}

View File

@ -9,13 +9,13 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const BLUE = 6
.label BORDER_COLOR = $d020
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.segment Code
@ -46,12 +46,12 @@ main: {
// *BORDER_COLOR = BLUE
lda #BLUE
sta BORDER_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
lda #<1
sta.z i
lda #>1

View File

@ -10,8 +10,8 @@ main::@4: scope:[main] from main
to:main::@5
main::@5: scope:[main] from main::@4
[4] *BORDER_COLOR = BLUE
[5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
to:main::@1
main::@1: scope:[main] from main::@5 main::@6
[7] main::i#2 = phi( main::@5/1, main::@6/main::i#1 )

View File

@ -17,8 +17,8 @@ main::@4: scope:[main] from main
to:main::@5
main::@5: scope:[main] from main::@4
*BORDER_COLOR = BLUE
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
*VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
main::i#0 = 1
to:main::@1
main::@1: scope:[main] from main::@5 main::@6
@ -283,10 +283,10 @@ const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*)$d020
const nomodify byte* D011 = (byte*)$d011
const nomodify byte* SCREEN = (byte*)$400
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*)$d018
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*)$d018
const nomodify byte VICII_RSEL = 8
void __start()
const byte* bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
void circle(signed word circle::xc , signed word circle::yc , signed word circle::r)
@ -484,10 +484,10 @@ Adding number conversion cast (snumber) $28*$19*8 in fill::size#0 = $28*$19*8
Adding number conversion cast (unumber) 0 in fill::val#0 = 0
Adding number conversion cast (snumber) $28*$19 in fill::size#1 = $28*$19
Adding number conversion cast (unumber) $16 in fill::val#1 = $16
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (snumber) $b4 in main::$2 = main::i#2 < $b4
Adding number conversion cast (snumber) $a0 in circle::xc#0 = $a0
Adding number conversion cast (snumber) $64 in circle::yc#0 = $64
@ -518,14 +518,14 @@ Adding number conversion cast (snumber) plot::$12 in plot::$12 = plot::$11 * (sn
Adding number conversion cast (snumber) 7 in plot::$13 = plot::x#9 & 7
Adding number conversion cast (snumber) plot::$13 in plot::$13 = plot::x#9 & (snumber)7
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $40 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast fill::size#0 = (snumber)$28*$19*8
Inlining cast fill::val#0 = (unumber)0
Inlining cast fill::size#1 = (snumber)$28*$19
Inlining cast fill::val#1 = (unumber)$16
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast circle::xc#0 = (snumber)$a0
Inlining cast circle::yc#0 = (snumber)$64
Successful SSA optimization Pass2InlineCast
@ -536,7 +536,7 @@ Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast 0
Simplifying constant integer cast $16
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast $40
@ -781,8 +781,8 @@ main::@4: scope:[main] from main
to:main::@5
main::@5: scope:[main] from main::@4
[4] *BORDER_COLOR = BLUE
[5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
to:main::@1
main::@1: scope:[main] from main::@5 main::@6
[7] main::i#2 = phi( main::@5/1, main::@6/main::i#1 )
@ -1092,8 +1092,8 @@ Allocated zp[1]:51 [ plot::$13 ]
Allocated zp[1]:52 [ plot::$14 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] if(main::i#2<$b4) goto main::@2 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
Statement [10] circle::r#0 = main::i#2 [ main::i#2 circle::r#0 ] ( [ main::i#2 circle::r#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
Statement [12] main::i#1 = main::i#2 + 5 [ main::i#1 ] ( [ main::i#1 ] { } ) always clobbers reg byte a
@ -1146,8 +1146,8 @@ Statement [75] plot::$13 = plot::x#8 & 7 [ plot::location#3 plot::$13 ] ( circle
Statement [76] plot::$14 = *plot::location#3 | bitmask[plot::$13] [ plot::location#3 plot::$14 ] ( circle:11::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:11::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:11::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:11::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:11::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:11::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:11::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:11::plot:55 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
Statement [77] *plot::location#3 = plot::$14 [ ] ( circle:11::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:11::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:11::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:11::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:11::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:11::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:11::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:11::plot:55 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] if(main::i#2<$b4) goto main::@2 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
Statement [10] circle::r#0 = main::i#2 [ main::i#2 circle::r#0 ] ( [ main::i#2 circle::r#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
Statement [12] main::i#1 = main::i#2 + 5 [ main::i#1 ] ( [ main::i#1 ] { } ) always clobbers reg byte a
@ -1283,13 +1283,13 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const BLUE = 6
.label BORDER_COLOR = $d020
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.segment Code
@ -1339,12 +1339,12 @@ main: {
// [4] *BORDER_COLOR = BLUE -- _deref_pbuc1=vbuc2
lda #BLUE
sta BORDER_COLOR
// [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// [7] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
__b1_from___b5:
// [7] phi main::i#2 = 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1
@ -2022,10 +2022,10 @@ const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
const byte* bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
void circle(signed word circle::xc , signed word circle::yc , signed word circle::r)
signed word~ circle::$0 zp[2]:8 202.0
@ -2136,13 +2136,13 @@ Score: 51752
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const BLUE = 6
.label BORDER_COLOR = $d020
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.segment Code
@ -2188,14 +2188,14 @@ main: {
// [4] *BORDER_COLOR = BLUE -- _deref_pbuc1=vbuc2
lda #BLUE
sta BORDER_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// [7] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
// [7] phi main::i#2 = 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1
lda #<1

View File

@ -3,10 +3,10 @@ const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
const byte* bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
void circle(signed word circle::xc , signed word circle::yc , signed word circle::r)
signed word~ circle::$0 zp[2]:8 202.0

View File

@ -9,13 +9,13 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const BLUE = 6
.label BORDER_COLOR = $d020
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.segment Code
@ -45,12 +45,12 @@ main: {
// *BORDER_COLOR = BLUE
lda #BLUE
sta BORDER_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// circle(100,100,50)
jsr circle
__b1:

View File

@ -10,8 +10,8 @@ main::@2: scope:[main] from main
to:main::@3
main::@3: scope:[main] from main::@2
[4] *BORDER_COLOR = BLUE
[5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[7] call circle
to:main::@1
main::@1: scope:[main] from main::@1 main::@3

View File

@ -17,8 +17,8 @@ main::@2: scope:[main] from main
to:main::@3
main::@3: scope:[main] from main::@2
*BORDER_COLOR = BLUE
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
*VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
circle::xc#0 = $64
circle::yc#0 = $64
circle::r#0 = $32
@ -259,10 +259,10 @@ const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*)$d020
const nomodify byte* D011 = (byte*)$d011
const nomodify byte* SCREEN = (byte*)$400
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*)$d018
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*)$d018
const nomodify byte VICII_RSEL = 8
void __start()
const byte* bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
void circle(signed word circle::xc , signed word circle::yc , signed word circle::r)
@ -443,10 +443,10 @@ Adding number conversion cast (snumber) $28*$19*8 in fill::size#0 = $28*$19*8
Adding number conversion cast (unumber) 0 in fill::val#0 = 0
Adding number conversion cast (snumber) $28*$19 in fill::size#1 = $28*$19
Adding number conversion cast (unumber) $16 in fill::val#1 = $16
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (snumber) $64 in circle::xc#0 = $64
Adding number conversion cast (snumber) $64 in circle::yc#0 = $64
Adding number conversion cast (snumber) $32 in circle::r#0 = $32
@ -472,14 +472,14 @@ Adding number conversion cast (snumber) plot::$4 in plot::$4 = plot::$3 * (snumb
Adding number conversion cast (snumber) 7 in plot::$5 = plot::x#8 & 7
Adding number conversion cast (snumber) plot::$5 in plot::$5 = plot::x#8 & (snumber)7
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $40 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast fill::size#0 = (snumber)$28*$19*8
Inlining cast fill::val#0 = (unumber)0
Inlining cast fill::size#1 = (snumber)$28*$19
Inlining cast fill::val#1 = (unumber)$16
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast circle::xc#0 = (snumber)$64
Inlining cast circle::yc#0 = (snumber)$64
Inlining cast circle::r#0 = (snumber)$32
@ -491,7 +491,7 @@ Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast 0
Simplifying constant integer cast $16
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast $40
@ -713,8 +713,8 @@ main::@2: scope:[main] from main
to:main::@3
main::@3: scope:[main] from main::@2
[4] *BORDER_COLOR = BLUE
[5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[7] call circle
to:main::@1
main::@1: scope:[main] from main::@1 main::@3
@ -989,8 +989,8 @@ Allocated zp[1]:47 [ plot::$5 ]
Allocated zp[1]:48 [ plot::$6 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] fill::end#0 = fill::addr#0 + fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( fill:1 [ fill::addr#0 fill::val#4 fill::end#0 ] { } fill:3 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:4 [ fill::val#4 ]
Statement [12] if(fill::addr#2!=fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( fill:1 [ fill::val#4 fill::end#0 fill::addr#2 ] { } fill:3 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
@ -1034,8 +1034,8 @@ Statement [66] plot::$5 = plot::x#8 & 7 [ plot::location#3 plot::$5 ] ( circle:7
Statement [67] plot::$6 = *plot::location#3 | bitmask[plot::$5] [ plot::location#3 plot::$6 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
Statement [68] *plot::location#3 = plot::$6 [ ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] fill::end#0 = fill::addr#0 + fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( fill:1 [ fill::addr#0 fill::val#4 fill::end#0 ] { } fill:3 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
Statement [12] if(fill::addr#2!=fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( fill:1 [ fill::val#4 fill::end#0 fill::addr#2 ] { } fill:3 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
Statement [14] *fill::addr#2 = fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( fill:1 [ fill::val#4 fill::end#0 fill::addr#2 ] { } fill:3 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y
@ -1159,13 +1159,13 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const BLUE = 6
.label BORDER_COLOR = $d020
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.segment Code
@ -1214,12 +1214,12 @@ main: {
// [4] *BORDER_COLOR = BLUE -- _deref_pbuc1=vbuc2
lda #BLUE
sta BORDER_COLOR
// [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// [7] call circle
// [16] phi from main::@3 to circle [phi:main::@3->circle]
circle_from___b3:
@ -1798,10 +1798,10 @@ const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
const byte* bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
void circle(signed word circle::xc , signed word circle::yc , signed word circle::r)
signed word~ circle::$10 zp[2]:6 202.0
@ -1906,13 +1906,13 @@ Score: 6073
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const BLUE = 6
.label BORDER_COLOR = $d020
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.segment Code
@ -1957,14 +1957,14 @@ main: {
// [4] *BORDER_COLOR = BLUE -- _deref_pbuc1=vbuc2
lda #BLUE
sta BORDER_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [5] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [6] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// circle(100,100,50)
// [7] call circle
// [16] phi from main::@3 to circle [phi:main::@3->circle]

View File

@ -3,10 +3,10 @@ const nomodify byte BLUE = 6
const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
const byte* bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
void circle(signed word circle::xc , signed word circle::yc , signed word circle::r)
signed word~ circle::$10 zp[2]:6 202.0

View File

@ -8,13 +8,13 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.label next = 5
@ -25,12 +25,12 @@ main: {
sta BORDER_COLOR
// *BG_COLOR = 0
sta BG_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// bitmap_init(BITMAP)
jsr bitmap_init
// bitmap_clear()

View File

@ -3,8 +3,8 @@ void main()
main: scope:[main] from
[0] *BORDER_COLOR = 0
[1] *BG_COLOR = 0
[2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[4] call bitmap_init
to:main::@2
main::@2: scope:[main] from main

View File

@ -567,8 +567,8 @@ main: scope:[main] from __start::@1
next#14 = phi( __start::@1/next#11 )
*BORDER_COLOR = 0
*BG_COLOR = 0
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
*VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
bitmap_init::bitmap#0 = BITMAP
call bitmap_init
to:main::@2
@ -646,10 +646,10 @@ const nomodify byte* BITMAP = (byte*)$2000
const nomodify byte* BORDER_COLOR = (byte*)$d020
const nomodify byte* D011 = (byte*)$d011
const nomodify byte* SCREEN = (byte*)$400
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*)$d018
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*)$d018
const nomodify byte VICII_RSEL = 8
void __start()
void bitmap_clear()
bool~ bitmap_clear::$0
@ -1137,25 +1137,25 @@ Adding number conversion cast (unumber) 1 in bitmap_line_ydxd::$6 = bitmap_line_
Adding number conversion cast (unumber) bitmap_line_ydxd::$6 in bitmap_line_ydxd::$6 = bitmap_line_ydxd::y1#2 + (unumber)1
Adding number conversion cast (unumber) 0 in *BORDER_COLOR = 0
Adding number conversion cast (unumber) 0 in *BG_COLOR = 0
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) 0 in bitmap_line::x0#0 = 0
Adding number conversion cast (unumber) 0 in bitmap_line::y0#0 = 0
Adding number conversion cast (unumber) $64 in bitmap_line::y1#0 = $64
Adding number conversion cast (unumber) $400 in init_screen::$0 = init_screen::c#2 != SCREEN+$400
Adding number conversion cast (unumber) $14 in *init_screen::c#3 = $14
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $40 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast bitmap_init::bits#2 = (unumber)$80
Inlining cast *bitmap_clear::bitmap#2 = (unumber)0
Inlining cast bitmap_plot::plotter#0 = (byte*)bitmap_plot::$0
Inlining cast *BORDER_COLOR = (unumber)0
Inlining cast *BG_COLOR = (unumber)0
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast bitmap_line::x0#0 = (unumber)0
Inlining cast bitmap_line::y0#0 = (unumber)0
Inlining cast bitmap_line::y1#0 = (unumber)$64
@ -1194,7 +1194,7 @@ Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast $40
@ -1776,8 +1776,8 @@ void main()
main: scope:[main] from
[0] *BORDER_COLOR = 0
[1] *BG_COLOR = 0
[2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[4] call bitmap_init
to:main::@2
main::@2: scope:[main] from main
@ -2336,8 +2336,8 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp[1]:31 [ bitmap_init::$7 ] has ALU potential.
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [17] bitmap_plot_xhi[bitmap_init::x#2] = >BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:3 [ bitmap_init::x#2 bitmap_init::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
@ -2408,8 +2408,8 @@ Removing always clobbered register reg byte y as potential for zp[1]:25 [ bitmap
Statement [129] *((byte*)bitmap_plot::plotter#0) = bitmap_plot::$1 [ ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte y
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [15] bitmap_init::$0 = bitmap_init::x#2 & $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a
Statement [17] bitmap_plot_xhi[bitmap_init::x#2] = >BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a
Statement [18] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a
@ -2456,8 +2456,8 @@ Statement [128] bitmap_plot::$1 = *((byte*)bitmap_plot::plotter#0) | bitmap_plot
Statement [129] *((byte*)bitmap_plot::plotter#0) = bitmap_plot::$1 [ ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte y
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [15] bitmap_init::$0 = bitmap_init::x#2 & $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a
Statement [17] bitmap_plot_xhi[bitmap_init::x#2] = >BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a
Statement [18] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a
@ -2650,13 +2650,13 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.label next = 5
@ -2669,12 +2669,12 @@ main: {
// [1] *BG_COLOR = 0 -- _deref_pbuc1=vbuc2
lda #0
sta BG_COLOR
// [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// [4] call bitmap_init
// [13] phi from main to bitmap_init [phi:main->bitmap_init]
bitmap_init_from_main:
@ -3552,10 +3552,10 @@ const nomodify byte* BITMAP = (byte*) 8192
const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void bitmap_clear()
byte* bitmap_clear::bitmap
word bitmap_clear::bitmap#0 bitmap zp[2]:7 11.0
@ -3750,13 +3750,13 @@ Score: 30221
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.label next = 5
@ -3770,14 +3770,14 @@ main: {
// *BG_COLOR = 0
// [1] *BG_COLOR = 0 -- _deref_pbuc1=vbuc2
sta BG_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// bitmap_init(BITMAP)
// [4] call bitmap_init
// [13] phi from main to bitmap_init [phi:main->bitmap_init]

View File

@ -3,10 +3,10 @@ const nomodify byte* BITMAP = (byte*) 8192
const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void bitmap_clear()
byte* bitmap_clear::bitmap
word bitmap_clear::bitmap#0 bitmap zp[2]:7 11.0

View File

@ -8,15 +8,15 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.const PURPLE = 4
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.label next = 2
@ -27,12 +27,12 @@ main: {
sta BORDER_COLOR
// *BG_COLOR = 0
sta BG_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// bitmap_init(BITMAP, SCREEN)
jsr bitmap_init
// bitmap_clear(PURPLE, WHITE)

View File

@ -3,8 +3,8 @@ void main()
main: scope:[main] from
[0] *BORDER_COLOR = 0
[1] *BG_COLOR = 0
[2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[4] call bitmap_init
to:main::@3
main::@3: scope:[main] from main

View File

@ -463,8 +463,8 @@ main: scope:[main] from __start::@1
bitmap_gfx#15 = phi( __start::@1/bitmap_gfx#17 )
*BORDER_COLOR = 0
*BG_COLOR = 0
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
*VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
bitmap_init::gfx#0 = BITMAP
bitmap_init::screen#0 = SCREEN
call bitmap_init
@ -563,10 +563,10 @@ const nomodify byte* BORDER_COLOR = (byte*)$d020
const nomodify byte* D011 = (byte*)$d011
const nomodify byte PURPLE = 4
const nomodify byte* SCREEN = (byte*)$400
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*)$d018
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*)$d018
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
word abs_u16(word abs_u16::w)
@ -1014,18 +1014,18 @@ Adding number conversion cast (unumber) -1 in sgn_u16::return#2 = -1
Adding number conversion cast (unumber) 1 in sgn_u16::return#3 = 1
Adding number conversion cast (unumber) 0 in *BORDER_COLOR = 0
Adding number conversion cast (unumber) 0 in *BG_COLOR = 0
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&$3fff/$400
Adding number conversion cast (unumber) 0 in bitmap_line::x1#0 = 0
Adding number conversion cast (unumber) 0 in bitmap_line::y1#0 = 0
Adding number conversion cast (unumber) $64 in bitmap_line::y2#0 = $64
Adding number conversion cast (unumber) $140 in main::$3 = next#0 == $140
Adding number conversion cast (unumber) 0 in next#1 = 0
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VIC_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $40 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
Adding number conversion cast (unumber) $400 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast memset::dst#0 = (byte*)memset::str#3
Inlining cast bitmap_init::bits#2 = (unumber)$80
@ -1034,7 +1034,7 @@ Inlining cast sgn_u16::return#2 = (unumber)-1
Inlining cast sgn_u16::return#3 = (unumber)1
Inlining cast *BORDER_COLOR = (unumber)0
Inlining cast *BG_COLOR = (unumber)0
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast bitmap_line::x1#0 = (unumber)0
Inlining cast bitmap_line::y1#0 = (unumber)0
Inlining cast bitmap_line::y2#0 = (unumber)$64
@ -1070,7 +1070,7 @@ Simplifying constant integer cast -1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast $40
@ -1568,8 +1568,8 @@ void main()
main: scope:[main] from
[0] *BORDER_COLOR = 0
[1] *BG_COLOR = 0
[2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
[3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400
[4] call bitmap_init
to:main::@3
main::@3: scope:[main] from main
@ -2063,8 +2063,8 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp[1]:36 [ bitmap_init::$4 ] has ALU potential.
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] bitmap_line::x2#0 = next#6 [ next#6 bitmap_line::x2#0 ] ( [ next#6 bitmap_line::x2#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
Statement [11] if(next#0!=$140) goto main::@5 [ next#0 ] ( [ next#0 ] { } ) always clobbers reg byte a
Statement [31] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
@ -2116,8 +2116,8 @@ Statement [115] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_
Statement [117] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] [ ] ( bitmap_line:9::bitmap_plot:62 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:9::bitmap_plot:73 [ next#6 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:9::bitmap_plot:79 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:9::bitmap_plot:88 [ next#6 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a reg byte y
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] bitmap_line::x2#0 = next#6 [ next#6 bitmap_line::x2#0 ] ( [ next#6 bitmap_line::x2#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
Statement [11] if(next#0!=$140) goto main::@5 [ next#0 ] ( [ next#0 ] { } ) always clobbers reg byte a
Statement [24] bitmap_init::$7 = bitmap_init::y#2 & 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a
@ -2281,15 +2281,15 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.const PURPLE = 4
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.label next = 2
@ -2302,12 +2302,12 @@ main: {
// [1] *BG_COLOR = 0 -- _deref_pbuc1=vbuc2
lda #0
sta BG_COLOR
// [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// [4] call bitmap_init
// [14] phi from main to bitmap_init [phi:main->bitmap_init]
bitmap_init_from_main:
@ -3233,10 +3233,10 @@ const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte PURPLE = 4
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
word abs_u16(word abs_u16::w)
byte~ abs_u16::$0 reg byte a 2002.0
@ -3412,15 +3412,15 @@ Score: 30180
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.const PURPLE = 4
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label D011 = $d011
.label VIC_MEMORY = $d018
.label VICII_MEMORY = $d018
.label SCREEN = $400
.label BITMAP = $2000
.label next = 2
@ -3434,14 +3434,14 @@ main: {
// *BG_COLOR = 0
// [1] *BG_COLOR = 0 -- _deref_pbuc1=vbuc2
sta BG_COLOR
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [2] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [3] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// [3] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
// bitmap_init(BITMAP, SCREEN)
// [4] call bitmap_init
// [14] phi from main to bitmap_init [phi:main->bitmap_init]

View File

@ -4,10 +4,10 @@ const nomodify byte* BORDER_COLOR = (byte*) 53280
const nomodify byte* D011 = (byte*) 53265
const nomodify byte PURPLE = 4
const nomodify byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
word abs_u16(word abs_u16::w)
byte~ abs_u16::$0 reg byte a 2002.0

View File

@ -13,9 +13,9 @@
:BasicUpstart(__start)
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -28,7 +28,7 @@
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label RASTER = $d012
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -90,8 +90,8 @@ main: {
jsr bitmap_init
// bitmap_clear(BLACK, WHITE)
jsr bitmap_clear
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *D018 = toD018(SCREEN, BITMAP)
lda #toD0181_return
@ -268,11 +268,11 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VIC_CONTROL |=$80
// *VICII_CONTROL |=$80
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// *RASTER = $00
lda #0
sta RASTER

View File

@ -40,7 +40,7 @@ main::@8: scope:[main] from main
[14] call bitmap_clear
to:main::@9
main::@9: scope:[main] from main::@8
[15] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[15] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@9
[16] phi()
@ -147,7 +147,7 @@ init_irq: scope:[init_irq] from main::@7
[62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[63] *PROCPORT = PROCPORT_RAM_IO
[64] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[65] *VIC_CONTROL = *VIC_CONTROL | $80
[65] *VICII_CONTROL = *VICII_CONTROL | $80
[66] *RASTER = 0
[67] *IRQ_ENABLE = IRQ_RASTER
[68] *HARDWARE_IRQ = &irq

View File

@ -201,7 +201,7 @@ main::@8: scope:[main] from main
main::@9: scope:[main] from main::@8
bitmap_screen#33 = phi( main::@8/bitmap_screen#2 )
bitmap_gfx#34 = phi( main::@8/bitmap_gfx#2 )
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
main::toD0181_screen#0 = SCREEN
main::toD0181_gfx#0 = BITMAP
to:main::toD0181
@ -333,7 +333,7 @@ init_irq: scope:[init_irq] from main::@7
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*VIC_CONTROL = *VIC_CONTROL | $80
*VICII_CONTROL = *VICII_CONTROL | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
*HARDWARE_IRQ = &irq
@ -407,10 +407,10 @@ const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*)$d012
const byte* SCREEN = (byte*)$400
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*)$d011
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*)$d011
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
@ -695,8 +695,8 @@ Adding number conversion cast (unumber) bitmap_clear::$1 in bitmap_clear::$1 = b
Adding number conversion cast (unumber) 0 in memset::c#1 = 0
Adding number conversion cast (unumber) $fff8 in bitmap_plot::$0 = bitmap_plot::x#1 & $fff8
Adding number conversion cast (unumber) bitmap_plot::$0 in bitmap_plot::$0 = bitmap_plot::x#1 & (unumber)$fff8
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
@ -711,14 +711,14 @@ Adding number conversion cast (unumber) $13f in main::$5 = main::x#1 == $13f
Adding number conversion cast (unumber) 0 in main::$6 = main::x#1 == 0
Adding number conversion cast (unumber) $c7 in main::$10 = main::y#4 == $c7
Adding number conversion cast (unumber) 0 in main::$11 = main::y#4 == 0
Adding number conversion cast (unumber) $80 in *VIC_CONTROL = *VIC_CONTROL | $80
Adding number conversion cast (unumber) $80 in *VICII_CONTROL = *VICII_CONTROL | $80
Adding number conversion cast (unumber) 0 in *RASTER = 0
Adding number conversion cast (unumber) 0 in irq::$1 = 0 != frame_cnt
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast memset::dst#0 = (byte*)memset::str#3
Inlining cast bitmap_init::bits#2 = (unumber)$80
Inlining cast memset::c#1 = (unumber)0
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast *RASTER = (unumber)0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53266
@ -746,7 +746,7 @@ Simplifying constant integer cast 0
Simplifying constant integer cast bitmap_plot_yhi[bitmap_plot::y#1]
Simplifying constant integer cast bitmap_plot_ylo[bitmap_plot::y#1]
Simplifying constant integer cast $fff8
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
@ -1181,7 +1181,7 @@ main::@8: scope:[main] from main
[14] call bitmap_clear
to:main::@9
main::@9: scope:[main] from main::@8
[15] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[15] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@9
[16] phi()
@ -1288,7 +1288,7 @@ init_irq: scope:[init_irq] from main::@7
[62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[63] *PROCPORT = PROCPORT_RAM_IO
[64] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[65] *VIC_CONTROL = *VIC_CONTROL | $80
[65] *VICII_CONTROL = *VICII_CONTROL | $80
[66] *RASTER = 0
[67] *IRQ_ENABLE = IRQ_RASTER
[68] *HARDWARE_IRQ = &irq
@ -1491,7 +1491,7 @@ Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { }
Statement [8] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [15] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [15] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [17] *D018 = main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [20] bitmap_plot::x#0 = main::x#2 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] { { bitmap_plot::x#0 = main::x#2 } { bitmap_plot::y#0 = main::y#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::y#2 main::y#1 ]
@ -1510,7 +1510,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:10 [ bitmap
Statement [62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [63] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [64] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [65] *VIC_CONTROL = *VIC_CONTROL | $80 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [65] *VICII_CONTROL = *VICII_CONTROL | $80 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [66] *RASTER = 0 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [67] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [68] *HARDWARE_IRQ = &irq [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
@ -1533,7 +1533,7 @@ Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { }
Statement [8] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [15] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [15] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [17] *D018 = main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [20] bitmap_plot::x#0 = main::x#2 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] { { bitmap_plot::x#0 = main::x#2 } { bitmap_plot::y#0 = main::y#2 } } ) always clobbers reg byte a
Statement [23] main::x#1 = main::x#2 + main::vx#2 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ( main:3 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] { } ) always clobbers reg byte a
@ -1550,7 +1550,7 @@ Statement [51] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8 [ bitma
Statement [62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [63] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [64] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [65] *VIC_CONTROL = *VIC_CONTROL | $80 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [65] *VICII_CONTROL = *VICII_CONTROL | $80 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [66] *RASTER = 0 [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [67] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [68] *HARDWARE_IRQ = &irq [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
@ -1659,9 +1659,9 @@ ASSEMBLER BEFORE OPTIMIZATION
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -1674,7 +1674,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label RASTER = $d012
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -1776,8 +1776,8 @@ main: {
jmp __b9
// main::@9
__b9:
// [15] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [15] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [16] phi from main::@9 to main::toD0181 [phi:main::@9->main::toD0181]
toD0181_from___b9:
@ -2083,11 +2083,11 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [65] *VIC_CONTROL = *VIC_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// [65] *VICII_CONTROL = *VICII_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// [66] *RASTER = 0 -- _deref_pbuc1=vbuc2
lda #0
sta RASTER
@ -2338,10 +2338,10 @@ const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*) 53266
const byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
@ -2463,9 +2463,9 @@ Score: 3222
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -2478,7 +2478,7 @@ Score: 3222
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label RASTER = $d012
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -2569,9 +2569,9 @@ main: {
// [56] phi from main::@8 to bitmap_clear [phi:main::@8->bitmap_clear]
jsr bitmap_clear
// main::@9
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [15] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [15] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [16] phi from main::@9 to main::toD0181 [phi:main::@9->main::toD0181]
// main::toD0181
@ -2851,12 +2851,12 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VIC_CONTROL |=$80
// [65] *VIC_CONTROL = *VIC_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// *VICII_CONTROL |=$80
// [65] *VICII_CONTROL = *VICII_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// *RASTER = $00
// [66] *RASTER = 0 -- _deref_pbuc1=vbuc2
lda #0

View File

@ -16,10 +16,10 @@ const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*) 53266
const byte* SCREEN = (byte*) 1024
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)

View File

@ -13,9 +13,9 @@
:BasicUpstart(__start)
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -35,7 +35,7 @@
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label RASTER = $d012
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -111,8 +111,8 @@ main: {
jsr bitmap_init
// bitmap_clear(BLACK, WHITE)
jsr bitmap_clear
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *D018 = toD018(SCREEN, BITMAP)
lda #toD0181_return
@ -488,11 +488,11 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VIC_CONTROL |=$80
// *VICII_CONTROL |=$80
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// *RASTER = $00
lda #0
sta RASTER

View File

@ -44,7 +44,7 @@ main::@7: scope:[main] from main::@6
[16] call bitmap_clear
to:main::@8
main::@8: scope:[main] from main::@7
[17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@8
[18] phi()
@ -204,7 +204,7 @@ init_irq: scope:[init_irq] from main::@5
[101] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[102] *PROCPORT = PROCPORT_RAM_IO
[103] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[104] *VIC_CONTROL = *VIC_CONTROL | $80
[104] *VICII_CONTROL = *VICII_CONTROL | $80
[105] *RASTER = 0
[106] *IRQ_ENABLE = IRQ_RASTER
[107] *HARDWARE_IRQ = &irq

View File

@ -686,7 +686,7 @@ main::@10: scope:[main] from main::@9
bitmap_screen#34 = phi( main::@9/bitmap_screen#2 )
bitmap_gfx#35 = phi( main::@9/bitmap_gfx#2 )
rem16u#41 = phi( main::@9/rem16u#43 )
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
main::toD0181_screen#0 = SCREEN
main::toD0181_gfx#0 = BITMAP
to:main::toD0181
@ -848,7 +848,7 @@ init_irq: scope:[init_irq] from main::@7
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*VIC_CONTROL = *VIC_CONTROL | $80
*VICII_CONTROL = *VICII_CONTROL | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
*HARDWARE_IRQ = &irq
@ -933,10 +933,10 @@ const nomodify byte* RASTER = (byte*)$d012
const byte* SCREEN = (byte*)$400
const signed word* SINE[$200] = { fill( $200, 0) }
const byte SIZEOF_SIGNED_WORD = 2
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*)$d011
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*)$d011
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
@ -1680,8 +1680,8 @@ Adding number conversion cast (unumber) bitmap_plot::$0 in bitmap_plot::$0 = bit
Adding number conversion cast (unumber) $200 in sin16s_gen2::wavelength#0 = $200
Adding number conversion cast (snumber) -$1001 in sin16s_gen2::min#0 = -$1001
Adding number conversion cast (snumber) $1001 in sin16s_gen2::max#0 = $1001
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
@ -1704,7 +1704,7 @@ Adding number conversion cast (unumber) $200 in main::$14 = main::idx_x#1 == $20
Adding number conversion cast (unumber) $200 in main::$16 = main::idx_y#1 == $200
Adding number conversion cast (unumber) 0 in main::idx_x#2 = 0
Adding number conversion cast (unumber) 0 in main::idx_y#2 = 0
Adding number conversion cast (unumber) $80 in *VIC_CONTROL = *VIC_CONTROL | $80
Adding number conversion cast (unumber) $80 in *VICII_CONTROL = *VICII_CONTROL | $80
Adding number conversion cast (unumber) 0 in *RASTER = 0
Adding number conversion cast (unumber) 0 in irq::$1 = 0 != frame_cnt
Successful SSA optimization PassNAddNumberTypeConversions
@ -1722,7 +1722,7 @@ Inlining cast memset::c#1 = (unumber)0
Inlining cast sin16s_gen2::wavelength#0 = (unumber)$200
Inlining cast sin16s_gen2::min#0 = (snumber)-$1001
Inlining cast sin16s_gen2::max#0 = (snumber)$1001
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast mul16s::a#1 = (snumber)$a0
Inlining cast mul16s::a#2 = (snumber)$64
Inlining cast main::idx_x#2 = (unumber)0
@ -1783,7 +1783,7 @@ Simplifying constant integer cast $fff8
Simplifying constant integer cast $200
Simplifying constant integer cast -$1001
Simplifying constant integer cast $1001
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
@ -2602,7 +2602,7 @@ main::@7: scope:[main] from main::@6
[16] call bitmap_clear
to:main::@8
main::@8: scope:[main] from main::@7
[17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@8
[18] phi()
@ -2762,7 +2762,7 @@ init_irq: scope:[init_irq] from main::@5
[101] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[102] *PROCPORT = PROCPORT_RAM_IO
[103] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[104] *VIC_CONTROL = *VIC_CONTROL | $80
[104] *VICII_CONTROL = *VICII_CONTROL | $80
[105] *RASTER = 0
[106] *IRQ_ENABLE = IRQ_RASTER
[107] *HARDWARE_IRQ = &irq
@ -3581,7 +3581,7 @@ Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { }
Statement [8] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [19] *D018 = main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [22] main::$19 = main::idx_x#3 << 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$19 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$19 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
Statement [23] main::$21 = SINE + main::$19 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$21 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$21 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
@ -3621,7 +3621,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:16 [ bitmap
Statement [101] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [102] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [103] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [104] *VIC_CONTROL = *VIC_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [104] *VICII_CONTROL = *VICII_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [105] *RASTER = 0 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [106] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [107] *HARDWARE_IRQ = &irq [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
@ -3708,7 +3708,7 @@ Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { }
Statement [8] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [19] *D018 = main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [22] main::$19 = main::idx_x#3 << 1 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$19 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$19 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
Statement [23] main::$21 = SINE + main::$19 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$21 ] ( main:3 [ frame_cnt main::idx_x#3 main::idx_y#3 main::$21 ] { { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
@ -3748,7 +3748,7 @@ Statement [90] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8 [ bitma
Statement [101] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [102] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [103] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [104] *VIC_CONTROL = *VIC_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [104] *VICII_CONTROL = *VICII_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [105] *RASTER = 0 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [106] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [107] *HARDWARE_IRQ = &irq [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
@ -4072,9 +4072,9 @@ ASSEMBLER BEFORE OPTIMIZATION
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -4094,7 +4094,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label RASTER = $d012
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -4217,8 +4217,8 @@ main: {
jmp __b8
// main::@8
__b8:
// [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [18] phi from main::@8 to main::toD0181 [phi:main::@8->main::toD0181]
toD0181_from___b8:
@ -4782,11 +4782,11 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [104] *VIC_CONTROL = *VIC_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// [104] *VICII_CONTROL = *VICII_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// [105] *RASTER = 0 -- _deref_pbuc1=vbuc2
lda #0
sta RASTER
@ -5907,10 +5907,10 @@ const nomodify byte* RASTER = (byte*) 53266
const byte* SCREEN = (byte*) 1024
const signed word* SINE[$200] = { fill( $200, 0) }
const byte SIZEOF_SIGNED_WORD = 2
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
@ -6232,9 +6232,9 @@ Score: 20494
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -6254,7 +6254,7 @@ Score: 20494
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
.label RASTER = $d012
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -6363,9 +6363,9 @@ main: {
// [95] phi from main::@7 to bitmap_clear [phi:main::@7->bitmap_clear]
jsr bitmap_clear
// main::@8
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [18] phi from main::@8 to main::toD0181 [phi:main::@8->main::toD0181]
// main::toD0181
@ -6904,12 +6904,12 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VIC_CONTROL |=$80
// [104] *VIC_CONTROL = *VIC_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// *VICII_CONTROL |=$80
// [104] *VICII_CONTROL = *VICII_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// *RASTER = $00
// [105] *RASTER = 0 -- _deref_pbuc1=vbuc2
lda #0

View File

@ -21,10 +21,10 @@ const nomodify byte* RASTER = (byte*) 53266
const byte* SCREEN = (byte*) 1024
const signed word* SINE[$200] = { fill( $200, 0) }
const byte SIZEOF_SIGNED_WORD = 2
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)

View File

@ -13,9 +13,9 @@
:BasicUpstart(__start)
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -36,7 +36,7 @@
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -116,8 +116,8 @@ main: {
jsr bitmap_init
// bitmap_clear(BLACK, WHITE)
jsr bitmap_clear
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *D018 = toD018(SCREEN, BITMAP)
lda #toD0181_return
@ -524,11 +524,11 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VIC_CONTROL |=$80
// *VICII_CONTROL |=$80
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// *RASTER = $00
lda #0
sta RASTER

View File

@ -44,7 +44,7 @@ main::@10: scope:[main] from main::@9
[16] call bitmap_clear
to:main::@11
main::@11: scope:[main] from main::@10
[17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@11
[18] phi()
@ -223,7 +223,7 @@ init_irq: scope:[init_irq] from main::@8
[110] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[111] *PROCPORT = PROCPORT_RAM_IO
[112] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[113] *VIC_CONTROL = *VIC_CONTROL | $80
[113] *VICII_CONTROL = *VICII_CONTROL | $80
[114] *RASTER = 0
[115] *IRQ_ENABLE = IRQ_RASTER
[116] *HARDWARE_IRQ = &irq

View File

@ -686,7 +686,7 @@ main::@14: scope:[main] from main::@13
bitmap_screen#38 = phi( main::@13/bitmap_screen#2 )
bitmap_gfx#39 = phi( main::@13/bitmap_gfx#2 )
rem16u#45 = phi( main::@13/rem16u#47 )
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
main::toD0181_screen#0 = SCREEN
main::toD0181_gfx#0 = BITMAP
to:main::toD0181
@ -910,7 +910,7 @@ init_irq: scope:[init_irq] from main::@11
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
*PROCPORT = PROCPORT_RAM_IO
*((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
*VIC_CONTROL = *VIC_CONTROL | $80
*VICII_CONTROL = *VICII_CONTROL | $80
*RASTER = 0
*IRQ_ENABLE = IRQ_RASTER
*HARDWARE_IRQ = &irq
@ -996,10 +996,10 @@ const nomodify byte* RASTER = (byte*)$d012
const byte* SCREEN = (byte*)$400
const signed word* SINE[$200] = { fill( $200, 0) }
const byte SIZEOF_SIGNED_WORD = 2
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*)$d011
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*)$d011
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
@ -1795,8 +1795,8 @@ Adding number conversion cast (unumber) bitmap_plot::$0 in bitmap_plot::$0 = bit
Adding number conversion cast (unumber) $200 in sin16s_gen2::wavelength#0 = $200
Adding number conversion cast (snumber) -$1001 in sin16s_gen2::min#0 = -$1001
Adding number conversion cast (snumber) $1001 in sin16s_gen2::max#0 = $1001
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
@ -1821,7 +1821,7 @@ Adding number conversion cast (unumber) 1 in main::$20 = main::r_add#4 != 1
Adding number conversion cast (unumber) 0 in main::idx_y#2 = 0
Adding number conversion cast (snumber) $200*$c+$100 in main::$23 = main::r#5 >= $200*$c+$100
Adding number conversion cast (unumber) 2 in main::r_add#1 = main::r_add#5 / 2
Adding number conversion cast (unumber) $80 in *VIC_CONTROL = *VIC_CONTROL | $80
Adding number conversion cast (unumber) $80 in *VICII_CONTROL = *VICII_CONTROL | $80
Adding number conversion cast (unumber) 0 in *RASTER = 0
Adding number conversion cast (unumber) 0 in irq::$1 = 0 != frame_cnt
Successful SSA optimization PassNAddNumberTypeConversions
@ -1839,7 +1839,7 @@ Inlining cast memset::c#1 = (unumber)0
Inlining cast sin16s_gen2::wavelength#0 = (unumber)$200
Inlining cast sin16s_gen2::min#0 = (snumber)-$1001
Inlining cast sin16s_gen2::max#0 = (snumber)$1001
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast main::idx_x#2 = (unumber)0
Inlining cast main::idx_y#2 = (unumber)0
Inlining cast *RASTER = (unumber)0
@ -1899,7 +1899,7 @@ Simplifying constant integer cast $fff8
Simplifying constant integer cast $200
Simplifying constant integer cast -$1001
Simplifying constant integer cast $1001
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
@ -2773,7 +2773,7 @@ main::@10: scope:[main] from main::@9
[16] call bitmap_clear
to:main::@11
main::@11: scope:[main] from main::@10
[17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@11
[18] phi()
@ -2952,7 +2952,7 @@ init_irq: scope:[init_irq] from main::@8
[110] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
[111] *PROCPORT = PROCPORT_RAM_IO
[112] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
[113] *VIC_CONTROL = *VIC_CONTROL | $80
[113] *VICII_CONTROL = *VICII_CONTROL | $80
[114] *RASTER = 0
[115] *IRQ_ENABLE = IRQ_RASTER
[116] *HARDWARE_IRQ = &irq
@ -3784,7 +3784,7 @@ Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { }
Statement [8] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [19] *D018 = main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [22] main::$26 = main::idx_x#11 << 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
@ -3837,7 +3837,7 @@ Removing always clobbered register reg byte a as potential for zp[1]:19 [ bitmap
Statement [110] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [111] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [112] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [113] *VIC_CONTROL = *VIC_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [113] *VICII_CONTROL = *VICII_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [114] *RASTER = 0 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [115] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [116] *HARDWARE_IRQ = &irq [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
@ -3924,7 +3924,7 @@ Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { }
Statement [8] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *IRQ_STATUS = IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
Statement [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [19] *D018 = main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [22] main::$26 = main::idx_x#11 << 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
Statement [23] main::$30 = SINE + main::$26 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$30 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$30 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
@ -3974,7 +3974,7 @@ Statement [99] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (word)$28*8 [ bitma
Statement [110] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [111] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [112] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [113] *VIC_CONTROL = *VIC_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [113] *VICII_CONTROL = *VICII_CONTROL | $80 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [114] *RASTER = 0 [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [115] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
Statement [116] *HARDWARE_IRQ = &irq [ ] ( main:3::init_irq:20 [ frame_cnt ] { } ) always clobbers reg byte a
@ -4304,9 +4304,9 @@ ASSEMBLER BEFORE OPTIMIZATION
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -4327,7 +4327,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -4454,8 +4454,8 @@ main: {
jmp __b11
// main::@11
__b11:
// [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [18] phi from main::@11 to main::toD0181 [phi:main::@11->main::toD0181]
toD0181_from___b11:
@ -5073,11 +5073,11 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// [113] *VIC_CONTROL = *VIC_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// [113] *VICII_CONTROL = *VICII_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// [114] *RASTER = 0 -- _deref_pbuc1=vbuc2
lda #0
sta RASTER
@ -6215,10 +6215,10 @@ const nomodify byte* RASTER = (byte*) 53266
const byte* SCREEN = (byte*) 1024
const signed word* SINE[$200] = { fill( $200, 0) }
const byte SIZEOF_SIGNED_WORD = 2
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)
@ -6549,9 +6549,9 @@ Score: 20654
// Global Constants & labels
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
// Bits for the VICII IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
@ -6572,7 +6572,7 @@ Score: 20654
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label BG_COLOR = $d021
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
.label D011 = $d011
.label D018 = $d018
// VIC II IRQ Status Register
@ -6685,9 +6685,9 @@ main: {
// [104] phi from main::@10 to bitmap_clear [phi:main::@10->bitmap_clear]
jsr bitmap_clear
// main::@11
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [17] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [17] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [18] phi from main::@11 to main::toD0181 [phi:main::@11->main::toD0181]
// main::toD0181
@ -7276,12 +7276,12 @@ init_irq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VIC_CONTROL |=$80
// [113] *VIC_CONTROL = *VIC_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// *VICII_CONTROL |=$80
// [113] *VICII_CONTROL = *VICII_CONTROL | $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
ora VICII_CONTROL
sta VICII_CONTROL
// *RASTER = $00
// [114] *RASTER = 0 -- _deref_pbuc1=vbuc2
lda #0

View File

@ -22,10 +22,10 @@ const nomodify byte* RASTER = (byte*) 53266
const byte* SCREEN = (byte*) 1024
const signed word* SINE[$200] = { fill( $200, 0) }
const byte SIZEOF_SIGNED_WORD = 2
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
void bitmap_clear(byte bitmap_clear::bgcol , byte bitmap_clear::fgcol)

View File

@ -11,9 +11,9 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.label D011 = $d011
.label D018 = $d018
@ -31,8 +31,8 @@ main: {
jsr bitmap_init
// bitmap_clear(BLACK, WHITE)
jsr bitmap_clear
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// *D018 = toD018(SCREEN, BITMAP)
lda #toD0181_return

View File

@ -9,7 +9,7 @@ main::@5: scope:[main] from main
[3] call bitmap_clear
to:main::@6
main::@6: scope:[main] from main::@5
[4] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@6
[5] phi()

View File

@ -477,7 +477,7 @@ main::@6: scope:[main] from main
main::@7: scope:[main] from main::@6
bitmap_screen#30 = phi( main::@6/bitmap_screen#2 )
bitmap_gfx#31 = phi( main::@6/bitmap_gfx#2 )
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
*D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
main::toD0181_screen#0 = SCREEN
main::toD0181_gfx#0 = BITMAP
to:main::toD0181
@ -601,9 +601,9 @@ const byte RADIX::HEXADECIMAL = $10
const byte RADIX::OCTAL = 8
const byte* SCREEN = (byte*)$400
const byte* SINTAB[$180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
void __start()
word abs_u16(word abs_u16::w)
@ -1079,8 +1079,8 @@ Adding number conversion cast (unumber) sgn_u16::$1 in sgn_u16::$1 = sgn_u16::$0
Adding number conversion cast (unumber) 0 in sgn_u16::$2 = 0 != sgn_u16::$1
Adding number conversion cast (unumber) -1 in sgn_u16::return#2 = -1
Adding number conversion cast (unumber) 1 in sgn_u16::return#3 = 1
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_BMM|VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
@ -1108,7 +1108,7 @@ Inlining cast bitmap_init::bits#2 = (unumber)$80
Inlining cast memset::c#1 = (unumber)0
Inlining cast sgn_u16::return#2 = (unumber)-1
Inlining cast sgn_u16::return#3 = (unumber)1
Inlining cast *D011 = (unumber)VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53272
@ -1137,7 +1137,7 @@ Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast -1
Simplifying constant integer cast 1
Simplifying constant integer cast VIC_BMM|VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
@ -1689,7 +1689,7 @@ main::@5: scope:[main] from main
[3] call bitmap_clear
to:main::@6
main::@6: scope:[main] from main::@5
[4] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
[4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
to:main::toD0181
main::toD0181: scope:[main] from main::@6
[5] phi()
@ -2217,7 +2217,7 @@ Allocated zp[2]:71 [ bitmap_plot::plotter#1 ]
Allocated zp[1]:73 [ bitmap_plot::$1 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp[1]:42 [ bitmap_init::$4 ] has ALU potential.
Statement [4] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] main::$13 = (word)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
@ -2281,7 +2281,7 @@ Statement [123] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_
Statement [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] [ ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::a#2 main::a#1 ]
Statement [4] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] main::$13 = (word)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a
Statement [11] bitmap_line::x1#0 = main::$13 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a
@ -2340,7 +2340,7 @@ Statement [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bi
Statement [122] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [123] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
Statement [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] [ ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
Statement [4] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] if(main::i#2!=8) goto main::@2 [ main::i#2 main::a#2 ] ( [ main::i#2 main::a#2 ] { } ) always clobbers reg byte a
Statement [10] main::$13 = (word)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a
@ -2530,9 +2530,9 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.label D011 = $d011
.label D018 = $d018
@ -2563,8 +2563,8 @@ main: {
jmp __b6
// main::@6
__b6:
// [4] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [5] phi from main::@6 to main::toD0181 [phi:main::@6->main::toD0181]
toD0181_from___b6:
@ -3493,9 +3493,9 @@ const byte RADIX::HEXADECIMAL = $10
const byte RADIX::OCTAL = 8
const byte* SCREEN = (byte*) 1024
const byte* SINTAB[$180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
word abs_u16(word abs_u16::w)
byte~ abs_u16::$0 reg byte a 2002.0
@ -3689,9 +3689,9 @@ Score: 26877
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const WHITE = 1
.label D011 = $d011
.label D018 = $d018
@ -3717,9 +3717,9 @@ main: {
// [41] phi from main::@5 to bitmap_clear [phi:main::@5->bitmap_clear]
jsr bitmap_clear
// main::@6
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
// [4] *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
// *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
// [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta D011
// [5] phi from main::@6 to main::toD0181 [phi:main::@6->main::toD0181]
// main::toD0181

View File

@ -8,9 +8,9 @@ const byte RADIX::HEXADECIMAL = $10
const byte RADIX::OCTAL = 8
const byte* SCREEN = (byte*) 1024
const byte* SINTAB[$180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }}
const nomodify byte VIC_BMM = $20
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte WHITE = 1
word abs_u16(word abs_u16::w)
byte~ abs_u16::$0 reg byte a 2002.0

View File

@ -12,11 +12,11 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_ECM = $40
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -31,9 +31,9 @@
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -88,12 +88,12 @@ main: {
// 8BPP Pixel Cell Mode
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF
sta DTV_CONTROL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM | VIC_CSEL
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM | VICII_CSEL
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEA_START_LO = < SCREEN
// Plane A: SCREEN
lda #0
@ -135,11 +135,11 @@ main: {
// Set VIC Bank bits to output - all others to input
lda #3^SCREEN/$4000
sta CIA2
// *VIC_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((>(((word)SCREEN)&$3fff))/4)
// *VICII_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((>(((word)SCREEN)&$3fff))/4)
// Set VIC Bank
// VIC memory
lda #(SCREEN&$3fff)/$40|(>(SCREEN&$3fff))/4
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - Grey Tones
__b1:
@ -189,9 +189,9 @@ main: {
inx
cpx #8
bne stabilize
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *BORDER_COLOR = 0
lda #0
sta BORDER_COLOR
@ -225,10 +225,10 @@ main: {
// rst&7
txa
and #7
// VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
ora #VIC_DEN|VIC_ECM|VIC_RSEL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
sta VIC_CONTROL
// VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
ora #VICII_DEN|VICII_ECM|VICII_RSEL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
sta VICII_CONTROL
// rst*$10
txa
asl

View File

@ -9,8 +9,8 @@ main: scope:[main] from
main::@6: scope:[main] from main
[4] *DTV_FEATURE = DTV_FEATURE_ENABLE
[5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF
[6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[8] *DTV_PLANEA_START_LO = 0
[9] *DTV_PLANEA_START_MI = >SCREEN
[10] *DTV_PLANEA_START_HI = 0
@ -25,7 +25,7 @@ main::@6: scope:[main] from main
[19] *DTV_PLANEB_MODULO_HI = 0
[20] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[21] *((byte*)CIA2) = 3^(byte)(word)SCREEN/$4000
[22] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
[22] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
to:main::@1
main::@1: scope:[main] from main::@1 main::@6
[23] main::j#2 = phi( main::@1/main::j#1, main::@6/0 )
@ -35,7 +35,7 @@ main::@1: scope:[main] from main::@1 main::@6
to:main::@2
main::@2: scope:[main] from main::@1 main::@5
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
[28] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[28] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[29] *BORDER_COLOR = 0
to:main::@3
main::@3: scope:[main] from main::@2 main::@3
@ -47,8 +47,8 @@ main::@4: scope:[main] from main::@3
main::@5: scope:[main] from main::@4 main::@5
[32] main::rst#1 = *RASTER
[33] main::$3 = main::rst#1 & 7
[34] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
[35] *VIC_CONTROL = main::$4
[34] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
[35] *VICII_CONTROL = main::$4
[36] main::$5 = main::rst#1 << 4
[37] *BORDER_COLOR = main::$5
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }

View File

@ -23,8 +23,8 @@ main: scope:[main] from __start::@1
main::@7: scope:[main] from main
*DTV_FEATURE = DTV_FEATURE_ENABLE
*DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF
*VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
*VIC_CONTROL2 = VIC_MCM|VIC_CSEL
*VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
*VICII_CONTROL2 = VICII_MCM|VICII_CSEL
*DTV_PLANEA_START_LO = <SCREEN
*DTV_PLANEA_START_MI = >SCREEN
*DTV_PLANEA_START_HI = 0
@ -39,7 +39,7 @@ main::@7: scope:[main] from main
*DTV_PLANEB_MODULO_HI = 0
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = 3^(byte)(word)SCREEN/$4000
*VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
*VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
main::j#0 = 0
to:main::@1
main::@1: scope:[main] from main::@1 main::@7
@ -54,7 +54,7 @@ main::@2: scope:[main] from main::@1 main::@6
to:main::@return
main::@3: scope:[main] from main::@2
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
*VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
*VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
*BORDER_COLOR = 0
main::rst#0 = $42
to:main::@4
@ -69,8 +69,8 @@ main::@5: scope:[main] from main::@4
main::@6: scope:[main] from main::@5 main::@6
main::rst#1 = *RASTER
main::$3 = main::rst#1 & 7
main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
*VIC_CONTROL = main::$4
main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
*VICII_CONTROL = main::$4
main::$5 = main::rst#1 * $10
*BORDER_COLOR = main::$5
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
@ -281,14 +281,14 @@ const nomodify byte PROCPORT_RAM_CHARROM = 1
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*)$d012
const nomodify byte* SCREEN = (byte*)$7c00
const nomodify byte* VIC_CONTROL = (byte*)$d011
const nomodify byte* VIC_CONTROL2 = (byte*)$d016
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*)$d018
const nomodify byte VIC_RSEL = 8
const nomodify byte* VICII_CONTROL = (byte*)$d011
const nomodify byte* VICII_CONTROL2 = (byte*)$d016
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*)$d018
const nomodify byte VICII_RSEL = 8
void __start()
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
const byte* dtvSetCpuBankSegment1::cpuBank = (byte*)$ff
@ -412,8 +412,8 @@ byte main::rst#0
byte main::rst#1
byte main::rst#2
Adding number conversion cast (unumber) VIC_DEN|VIC_ECM|VIC_RSEL|3 in *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *VIC_CONTROL = ((unumber)) VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) VICII_DEN|VICII_ECM|VICII_RSEL|3 in *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *VICII_CONTROL = ((unumber)) VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 0 in *DTV_PLANEA_START_HI = 0
Adding number conversion cast (unumber) 1 in *DTV_PLANEA_STEP = 1
Adding number conversion cast (unumber) 0 in *DTV_PLANEA_MODULO_LO = 0
@ -426,16 +426,16 @@ Adding number conversion cast (unumber) 3 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526
Adding number conversion cast (unumber) 3^(byte)(word)SCREEN/$4000 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = 3^(byte)(word)SCREEN/$4000
Adding number conversion cast (unumber) 3 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = ((unumber)) 3^(byte)(word)SCREEN/$4000
Adding number conversion cast (unumber) $4000 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = ((unumber)) (unumber)3^(byte)(word)SCREEN/$4000
Adding number conversion cast (unumber) (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 in *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) >(word)SCREEN&$3fff/4 in *VIC_MEMORY = ((unumber)) (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = ((unumber)) (byte)(word)SCREEN&$3fff/$40|(unumber)>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = ((unumber)) (byte)(word)SCREEN&(unumber)$3fff/$40|(unumber)>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) VIC_DEN|VIC_ECM|VIC_RSEL|3 in *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *VIC_CONTROL = ((unumber)) VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 in *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) >(word)SCREEN&$3fff/4 in *VICII_MEMORY = ((unumber)) (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = ((unumber)) (byte)(word)SCREEN&$3fff/$40|(unumber)>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = ((unumber)) (byte)(word)SCREEN&(unumber)$3fff/$40|(unumber)>(word)SCREEN&$3fff/4
Adding number conversion cast (unumber) VICII_DEN|VICII_ECM|VICII_RSEL|3 in *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *VICII_CONTROL = ((unumber)) VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 0 in *BORDER_COLOR = 0
Adding number conversion cast (unumber) 7 in main::$3 = main::rst#1 & 7
Adding number conversion cast (unumber) main::$3 in main::$3 = main::rst#1 & (unumber)7
Adding number conversion cast (unumber) main::$4 in main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
Adding number conversion cast (unumber) main::$4 in main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
Adding number conversion cast (unumber) $10 in main::$5 = main::rst#1 * $10
Adding number conversion cast (unumber) main::$5 in main::$5 = main::rst#1 * (unumber)$10
Adding number conversion cast (unumber) $f2 in main::$6 = main::rst#1 != $f2
@ -455,11 +455,11 @@ Adding number conversion cast (unumber) 0 in gfx_init_plane_charset8::$3 = gfx_i
Adding number conversion cast (unumber) 2 in gfx_init_plane_charset8::$5 = gfx_init_plane_charset8::bits#3 * 2
Adding number conversion cast (unumber) gfx_init_plane_charset8::$5 in gfx_init_plane_charset8::$5 = gfx_init_plane_charset8::bits#3 * (unumber)2
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *VIC_MEMORY = ((unumber)) (byte)(word)SCREEN&(unumber)$3fff/$40|(unumber)>(word)SCREEN&(unumber)$3fff/4
Adding number conversion cast (unumber) 4 in *VIC_MEMORY = ((unumber)) (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(unumber)>(word)SCREEN&(unumber)$3fff/4
Adding number conversion cast (unumber) $40 in *VICII_MEMORY = ((unumber)) (byte)(word)SCREEN&(unumber)$3fff/$40|(unumber)>(word)SCREEN&(unumber)$3fff/4
Adding number conversion cast (unumber) 4 in *VICII_MEMORY = ((unumber)) (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(unumber)>(word)SCREEN&(unumber)$3fff/4
Adding number conversion cast (unumber) $4000 in gfx_init_plane_charset8::gfxa#0 = (byte*)$4000+(word)CHARSET8&(unumber)$3fff
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast *VIC_CONTROL = (unumber)VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Inlining cast *VICII_CONTROL = (unumber)VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Inlining cast *DTV_PLANEA_START_HI = (unumber)0
Inlining cast *DTV_PLANEA_STEP = (unumber)1
Inlining cast *DTV_PLANEA_MODULO_LO = (unumber)0
@ -470,8 +470,8 @@ Inlining cast *DTV_PLANEB_MODULO_LO = (unumber)0
Inlining cast *DTV_PLANEB_MODULO_HI = (unumber)0
Inlining cast *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = (unumber)3
Inlining cast *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = (unumber)(unumber)3^(byte)(word)SCREEN/(unumber)$4000
Inlining cast *VIC_MEMORY = (unumber)(byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(unumber)>(word)SCREEN&(unumber)$3fff/(unumber)4
Inlining cast *VIC_CONTROL = (unumber)VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Inlining cast *VICII_MEMORY = (unumber)(byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(unumber)>(word)SCREEN&(unumber)$3fff/(unumber)4
Inlining cast *VICII_CONTROL = (unumber)VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Inlining cast *BORDER_COLOR = (unumber)0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53266
@ -501,7 +501,7 @@ Simplifying constant pointer cast (byte*) 53320
Simplifying constant pointer cast (byte*) 255
Simplifying constant pointer cast (byte*) 31744
Simplifying constant pointer cast (byte*) 32768
Simplifying constant integer cast VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 1
@ -521,7 +521,7 @@ Simplifying constant integer cast $40
Simplifying constant integer cast >(word)SCREEN&(unumber)$3fff/(unumber)4
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 7
@ -571,7 +571,7 @@ Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in main::$3 = main::rst#1 & 7
Inferred type updated to byte in main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
Inferred type updated to byte in main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
Inferred type updated to byte in main::$5 = main::rst#1 * $10
Inferred type updated to byte in gfx_init_screen0::$0 = gfx_init_screen0::cy#2 & $f
Inferred type updated to byte in gfx_init_screen0::$1 = gfx_init_screen0::$0 * $10
@ -807,8 +807,8 @@ main: scope:[main] from
main::@6: scope:[main] from main
[4] *DTV_FEATURE = DTV_FEATURE_ENABLE
[5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF
[6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[8] *DTV_PLANEA_START_LO = 0
[9] *DTV_PLANEA_START_MI = >SCREEN
[10] *DTV_PLANEA_START_HI = 0
@ -823,7 +823,7 @@ main::@6: scope:[main] from main
[19] *DTV_PLANEB_MODULO_HI = 0
[20] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[21] *((byte*)CIA2) = 3^(byte)(word)SCREEN/$4000
[22] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
[22] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4
to:main::@1
main::@1: scope:[main] from main::@1 main::@6
[23] main::j#2 = phi( main::@1/main::j#1, main::@6/0 )
@ -833,7 +833,7 @@ main::@1: scope:[main] from main::@1 main::@6
to:main::@2
main::@2: scope:[main] from main::@1 main::@5
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
[28] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[28] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[29] *BORDER_COLOR = 0
to:main::@3
main::@3: scope:[main] from main::@2 main::@3
@ -845,8 +845,8 @@ main::@4: scope:[main] from main::@3
main::@5: scope:[main] from main::@4 main::@5
[32] main::rst#1 = *RASTER
[33] main::$3 = main::rst#1 & 7
[34] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
[35] *VIC_CONTROL = main::$4
[34] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
[35] *VICII_CONTROL = main::$4
[36] main::$5 = main::rst#1 << 4
[37] *BORDER_COLOR = main::$5
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
@ -1099,8 +1099,8 @@ Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always
Statement [2] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *DTV_PLANEA_START_LO = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *DTV_PLANEA_START_MI = >SCREEN [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *DTV_PLANEA_START_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
@ -1115,12 +1115,12 @@ Statement [18] *DTV_PLANEB_MODULO_LO = 0 [ ] ( [ ] { } ) always clobbers reg b
Statement [19] *DTV_PLANEB_MODULO_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [20] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [21] *((byte*)CIA2) = 3^(byte)(word)SCREEN/$4000 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 [ ] ( [ ] { } ) always clobbers reg byte a
Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x
Statement [28] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [28] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [29] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [30] if(*RASTER!=$42) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [34] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Statement [34] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:18 [ main::rst#1 ]
Statement [36] main::$5 = main::rst#1 << 4 [ main::rst#1 main::$5 ] ( [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a
Statement [49] gfx_init_screen0::$1 = gfx_init_screen0::$0 << 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( gfx_init:3::gfx_init_screen0:41 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] { } ) always clobbers reg byte a
@ -1148,8 +1148,8 @@ Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always
Statement [2] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *DTV_PLANEA_START_LO = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *DTV_PLANEA_START_MI = >SCREEN [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *DTV_PLANEA_START_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
@ -1164,13 +1164,13 @@ Statement [18] *DTV_PLANEB_MODULO_LO = 0 [ ] ( [ ] { } ) always clobbers reg b
Statement [19] *DTV_PLANEB_MODULO_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [20] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [21] *((byte*)CIA2) = 3^(byte)(word)SCREEN/$4000 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 [ ] ( [ ] { } ) always clobbers reg byte a
Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x
Statement [28] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [28] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [29] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [30] if(*RASTER!=$42) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [33] main::$3 = main::rst#1 & 7 [ main::rst#1 main::$3 ] ( [ main::rst#1 main::$3 ] { } ) always clobbers reg byte a
Statement [34] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Statement [34] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Statement [36] main::$5 = main::rst#1 << 4 [ main::rst#1 main::$5 ] ( [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a
Statement [48] gfx_init_screen0::$0 = gfx_init_screen0::cy#4 & $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( gfx_init:3::gfx_init_screen0:41 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] { } ) always clobbers reg byte a
Statement [49] gfx_init_screen0::$1 = gfx_init_screen0::$0 << 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( gfx_init:3::gfx_init_screen0:41 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] { } ) always clobbers reg byte a
@ -1269,11 +1269,11 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_ECM = $40
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -1288,9 +1288,9 @@ ASSEMBLER BEFORE OPTIMIZATION
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -1351,12 +1351,12 @@ main: {
// 8BPP Pixel Cell Mode
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF
sta DTV_CONTROL
// [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL -- _deref_pbuc1=vbuc2
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL -- _deref_pbuc1=vbuc2
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// [8] *DTV_PLANEA_START_LO = 0 -- _deref_pbuc1=vbuc2
// Plane A: SCREEN
lda #0
@ -1403,11 +1403,11 @@ main: {
// Set VIC Bank bits to output - all others to input
lda #3^SCREEN/$4000
sta CIA2
// [22] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 -- _deref_pbuc1=vbuc2
// [22] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 -- _deref_pbuc1=vbuc2
// Set VIC Bank
// VIC memory
lda #(SCREEN&$3fff)/$40|(>(SCREEN&$3fff))/4
sta VIC_MEMORY
sta VICII_MEMORY
// [23] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
__b1_from___b6:
// [23] phi main::j#2 = 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1
@ -1469,9 +1469,9 @@ main: {
inx
cpx #8
bne stabilize
// [28] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// [28] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// [29] *BORDER_COLOR = 0 -- _deref_pbuc1=vbuc2
lda #0
sta BORDER_COLOR
@ -1512,10 +1512,10 @@ main: {
// [33] main::$3 = main::rst#1 & 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
// [34] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VIC_DEN|VIC_ECM|VIC_RSEL
// [35] *VIC_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VIC_CONTROL
// [34] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VICII_DEN|VICII_ECM|VICII_RSEL
// [35] *VICII_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VICII_CONTROL
// [36] main::$5 = main::rst#1 << 4 -- vbuaa=vbuxx_rol_4
txa
asl
@ -1954,14 +1954,14 @@ const nomodify byte PROCPORT_RAM_CHARROM = 1
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*) 53266
const nomodify byte* SCREEN = (byte*) 31744
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VIC_CONTROL2 = (byte*) 53270
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL2 = (byte*) 53270
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
const byte* dtvSetCpuBankSegment1::cpuBank = (byte*) 255
byte dtvSetCpuBankSegment1::cpuBankIdx
@ -2067,11 +2067,11 @@ Score: 75375
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_ECM = $40
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -2086,9 +2086,9 @@ Score: 75375
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -2152,14 +2152,14 @@ main: {
// 8BPP Pixel Cell Mode
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF
sta DTV_CONTROL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
// [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM | VIC_CSEL
// [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL -- _deref_pbuc1=vbuc2
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
// [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM | VICII_CSEL
// [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL -- _deref_pbuc1=vbuc2
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEA_START_LO = < SCREEN
// [8] *DTV_PLANEA_START_LO = 0 -- _deref_pbuc1=vbuc2
// Plane A: SCREEN
@ -2215,12 +2215,12 @@ main: {
// Set VIC Bank bits to output - all others to input
lda #3^SCREEN/$4000
sta CIA2
// *VIC_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((>(((word)SCREEN)&$3fff))/4)
// [22] *VIC_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 -- _deref_pbuc1=vbuc2
// *VICII_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((>(((word)SCREEN)&$3fff))/4)
// [22] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|>(word)SCREEN&$3fff/4 -- _deref_pbuc1=vbuc2
// Set VIC Bank
// VIC memory
lda #(SCREEN&$3fff)/$40|(>(SCREEN&$3fff))/4
sta VIC_MEMORY
sta VICII_MEMORY
// [23] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
// [23] phi main::j#2 = 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1
ldx #0
@ -2280,10 +2280,10 @@ main: {
inx
cpx #8
bne stabilize
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
// [28] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
// [28] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *BORDER_COLOR = 0
// [29] *BORDER_COLOR = 0 -- _deref_pbuc1=vbuc2
lda #0
@ -2325,12 +2325,12 @@ main: {
// [33] main::$3 = main::rst#1 & 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
// VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
// [34] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VIC_DEN|VIC_ECM|VIC_RSEL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
// [35] *VIC_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VIC_CONTROL
// VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
// [34] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VICII_DEN|VICII_ECM|VICII_RSEL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
// [35] *VICII_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VICII_CONTROL
// rst*$10
// [36] main::$5 = main::rst#1 << 4 -- vbuaa=vbuxx_rol_4
txa

View File

@ -30,14 +30,14 @@ const nomodify byte PROCPORT_RAM_CHARROM = 1
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*) 53266
const nomodify byte* SCREEN = (byte*) 31744
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VIC_CONTROL2 = (byte*) 53270
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL2 = (byte*) 53270
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
const byte* dtvSetCpuBankSegment1::cpuBank = (byte*) 255
byte dtvSetCpuBankSegment1::cpuBankIdx

View File

@ -12,11 +12,11 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_ECM = $40
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -30,9 +30,9 @@
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -76,12 +76,12 @@ main: {
// 8BPP Pixel Cell Mode
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF
sta DTV_CONTROL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM | VIC_CSEL
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM | VICII_CSEL
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEB_START_LO = < CHUNKY
// Plane B: CHUNKY
lda #0
@ -108,11 +108,11 @@ main: {
// Set VIC Bank bits to output - all others to input
lda #3^CHUNKY/$4000
sta CIA2
// *VIC_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((>(((word)CHUNKY)&$3fff))/4)
// *VICII_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((>(((word)CHUNKY)&$3fff))/4)
// Set VIC Bank
// VIC memory
lda #0
sta VIC_MEMORY
sta VICII_MEMORY
tax
// DTV Palette - Grey Tones
__b1:
@ -162,9 +162,9 @@ main: {
inx
cpx #8
bne stabilize
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *BORDER_COLOR = 0
lda #0
sta BORDER_COLOR
@ -198,10 +198,10 @@ main: {
// rst&7
txa
and #7
// VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
ora #VIC_DEN|VIC_ECM|VIC_RSEL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
sta VIC_CONTROL
// VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
ora #VICII_DEN|VICII_ECM|VICII_RSEL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
sta VICII_CONTROL
// rst*$10
txa
asl

View File

@ -9,8 +9,8 @@ main: scope:[main] from
main::@6: scope:[main] from main
[4] *DTV_FEATURE = DTV_FEATURE_ENABLE
[5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF
[6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[8] *DTV_PLANEB_START_LO = 0
[9] *DTV_PLANEB_START_MI = >CHUNKY
[10] *DTV_PLANEB_START_HI = 0
@ -19,7 +19,7 @@ main::@6: scope:[main] from main
[13] *DTV_PLANEB_MODULO_HI = 0
[14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[15] *((byte*)CIA2) = 3^(byte)(word)CHUNKY/$4000
[16] *VIC_MEMORY = 0
[16] *VICII_MEMORY = 0
to:main::@1
main::@1: scope:[main] from main::@1 main::@6
[17] main::j#2 = phi( main::@1/main::j#1, main::@6/0 )
@ -29,7 +29,7 @@ main::@1: scope:[main] from main::@1 main::@6
to:main::@2
main::@2: scope:[main] from main::@1 main::@5
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
[22] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[22] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[23] *BORDER_COLOR = 0
to:main::@3
main::@3: scope:[main] from main::@2 main::@3
@ -41,8 +41,8 @@ main::@4: scope:[main] from main::@3
main::@5: scope:[main] from main::@4 main::@5
[26] main::rst#1 = *RASTER
[27] main::$3 = main::rst#1 & 7
[28] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
[29] *VIC_CONTROL = main::$4
[28] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
[29] *VICII_CONTROL = main::$4
[30] main::$5 = main::rst#1 << 4
[31] *BORDER_COLOR = main::$5
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }

View File

@ -23,8 +23,8 @@ main: scope:[main] from __start::@1
main::@7: scope:[main] from main
*DTV_FEATURE = DTV_FEATURE_ENABLE
*DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF
*VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
*VIC_CONTROL2 = VIC_MCM|VIC_CSEL
*VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
*VICII_CONTROL2 = VICII_MCM|VICII_CSEL
*DTV_PLANEB_START_LO = <CHUNKY
*DTV_PLANEB_START_MI = >CHUNKY
*DTV_PLANEB_START_HI = 0
@ -33,7 +33,7 @@ main::@7: scope:[main] from main
*DTV_PLANEB_MODULO_HI = 0
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = 3^(byte)(word)CHUNKY/$4000
*VIC_MEMORY = (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
*VICII_MEMORY = (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
main::j#0 = 0
to:main::@1
main::@1: scope:[main] from main::@1 main::@7
@ -48,7 +48,7 @@ main::@2: scope:[main] from main::@1 main::@6
to:main::@return
main::@3: scope:[main] from main::@2
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
*VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
*VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
*BORDER_COLOR = 0
main::rst#0 = $42
to:main::@4
@ -63,8 +63,8 @@ main::@5: scope:[main] from main::@4
main::@6: scope:[main] from main::@5 main::@6
main::rst#1 = *RASTER
main::$3 = main::rst#1 & 7
main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
*VIC_CONTROL = main::$4
main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
*VICII_CONTROL = main::$4
main::$5 = main::rst#1 * $10
*BORDER_COLOR = main::$5
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
@ -187,14 +187,14 @@ const nomodify byte* PROCPORT_DDR = (byte*)0
const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*)$d012
const nomodify byte* VIC_CONTROL = (byte*)$d011
const nomodify byte* VIC_CONTROL2 = (byte*)$d016
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*)$d018
const nomodify byte VIC_RSEL = 8
const nomodify byte* VICII_CONTROL = (byte*)$d011
const nomodify byte* VICII_CONTROL2 = (byte*)$d016
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*)$d018
const nomodify byte VICII_RSEL = 8
void __start()
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
const byte* dtvSetCpuBankSegment1::cpuBank = (byte*)$ff
@ -262,8 +262,8 @@ byte main::rst#0
byte main::rst#1
byte main::rst#2
Adding number conversion cast (unumber) VIC_DEN|VIC_ECM|VIC_RSEL|3 in *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *VIC_CONTROL = ((unumber)) VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) VICII_DEN|VICII_ECM|VICII_RSEL|3 in *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *VICII_CONTROL = ((unumber)) VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 0 in *DTV_PLANEB_START_HI = 0
Adding number conversion cast (unumber) 8 in *DTV_PLANEB_STEP = 8
Adding number conversion cast (unumber) 0 in *DTV_PLANEB_MODULO_LO = 0
@ -272,34 +272,34 @@ Adding number conversion cast (unumber) 3 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526
Adding number conversion cast (unumber) 3^(byte)(word)CHUNKY/$4000 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = 3^(byte)(word)CHUNKY/$4000
Adding number conversion cast (unumber) 3 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = ((unumber)) 3^(byte)(word)CHUNKY/$4000
Adding number conversion cast (unumber) $4000 in *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = ((unumber)) (unumber)3^(byte)(word)CHUNKY/$4000
Adding number conversion cast (unumber) (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4 in *VIC_MEMORY = (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) >(word)CHUNKY&$3fff/4 in *VIC_MEMORY = ((unumber)) (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = ((unumber)) (byte)(word)CHUNKY&$3fff/$40|(unumber)>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) $3fff in *VIC_MEMORY = ((unumber)) (byte)(word)CHUNKY&(unumber)$3fff/$40|(unumber)>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) VIC_DEN|VIC_ECM|VIC_RSEL|3 in *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *VIC_CONTROL = ((unumber)) VIC_DEN|VIC_ECM|VIC_RSEL|3
Adding number conversion cast (unumber) (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4 in *VICII_MEMORY = (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) >(word)CHUNKY&$3fff/4 in *VICII_MEMORY = ((unumber)) (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = ((unumber)) (byte)(word)CHUNKY&$3fff/$40|(unumber)>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) $3fff in *VICII_MEMORY = ((unumber)) (byte)(word)CHUNKY&(unumber)$3fff/$40|(unumber)>(word)CHUNKY&$3fff/4
Adding number conversion cast (unumber) VICII_DEN|VICII_ECM|VICII_RSEL|3 in *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *VICII_CONTROL = ((unumber)) VICII_DEN|VICII_ECM|VICII_RSEL|3
Adding number conversion cast (unumber) 0 in *BORDER_COLOR = 0
Adding number conversion cast (unumber) 7 in main::$3 = main::rst#1 & 7
Adding number conversion cast (unumber) main::$3 in main::$3 = main::rst#1 & (unumber)7
Adding number conversion cast (unumber) main::$4 in main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
Adding number conversion cast (unumber) main::$4 in main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
Adding number conversion cast (unumber) $10 in main::$5 = main::rst#1 * $10
Adding number conversion cast (unumber) main::$5 in main::$5 = main::rst#1 * (unumber)$10
Adding number conversion cast (unumber) $f2 in main::$6 = main::rst#1 != $f2
Adding number conversion cast (unumber) $4000 in gfx_init_chunky::gfxbCpuBank#0 = (byte)CHUNKY/$4000
Adding number conversion cast (unumber) $8000 in gfx_init_chunky::$2 = gfx_init_chunky::gfxb#3 == $8000
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *VIC_MEMORY = ((unumber)) (byte)(word)CHUNKY&(unumber)$3fff/$40|(unumber)>(word)CHUNKY&(unumber)$3fff/4
Adding number conversion cast (unumber) 4 in *VIC_MEMORY = ((unumber)) (byte)(word)CHUNKY&(unumber)$3fff/(unumber)$40|(unumber)>(word)CHUNKY&(unumber)$3fff/4
Adding number conversion cast (unumber) $40 in *VICII_MEMORY = ((unumber)) (byte)(word)CHUNKY&(unumber)$3fff/$40|(unumber)>(word)CHUNKY&(unumber)$3fff/4
Adding number conversion cast (unumber) 4 in *VICII_MEMORY = ((unumber)) (byte)(word)CHUNKY&(unumber)$3fff/(unumber)$40|(unumber)>(word)CHUNKY&(unumber)$3fff/4
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast *VIC_CONTROL = (unumber)VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Inlining cast *VICII_CONTROL = (unumber)VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Inlining cast *DTV_PLANEB_START_HI = (unumber)0
Inlining cast *DTV_PLANEB_STEP = (unumber)8
Inlining cast *DTV_PLANEB_MODULO_LO = (unumber)0
Inlining cast *DTV_PLANEB_MODULO_HI = (unumber)0
Inlining cast *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = (unumber)3
Inlining cast *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = (unumber)(unumber)3^(byte)(word)CHUNKY/(unumber)$4000
Inlining cast *VIC_MEMORY = (unumber)(byte)(word)CHUNKY&(unumber)$3fff/(unumber)$40|(unumber)>(word)CHUNKY&(unumber)$3fff/(unumber)4
Inlining cast *VIC_CONTROL = (unumber)VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Inlining cast *VICII_MEMORY = (unumber)(byte)(word)CHUNKY&(unumber)$3fff/(unumber)$40|(unumber)>(word)CHUNKY&(unumber)$3fff/(unumber)4
Inlining cast *VICII_CONTROL = (unumber)VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Inlining cast *BORDER_COLOR = (unumber)0
Inlining cast gfx_init_chunky::gfxb#2 = (byte*)$4000
Successful SSA optimization Pass2InlineCast
@ -322,7 +322,7 @@ Simplifying constant pointer cast (byte*) 53319
Simplifying constant pointer cast (byte*) 53320
Simplifying constant pointer cast (byte*) 255
Simplifying constant pointer cast (byte*) 32768
Simplifying constant integer cast VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 8
@ -338,7 +338,7 @@ Simplifying constant integer cast $40
Simplifying constant integer cast >(word)CHUNKY&(unumber)$3fff/(unumber)4
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast VIC_DEN|VIC_ECM|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_DEN|VICII_ECM|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 7
@ -370,7 +370,7 @@ Finalized unsigned number type (word) $4000
Finalized unsigned number type (word) $8000
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in main::$3 = main::rst#1 & 7
Inferred type updated to byte in main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
Inferred type updated to byte in main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
Inferred type updated to byte in main::$5 = main::rst#1 * $10
Inversing boolean not [57] gfx_init_chunky::$3 = gfx_init_chunky::gfxb#3 != $8000 from [56] gfx_init_chunky::$2 = gfx_init_chunky::gfxb#3 == $8000
Successful SSA optimization Pass2UnaryNotSimplification
@ -415,7 +415,7 @@ Resolved ranged comparison value [64] if(gfx_init_chunky::x#1!=rangelast(0,$13f)
Resolved ranged next value [69] gfx_init_chunky::y#1 = ++ gfx_init_chunky::y#6 to ++
Resolved ranged comparison value [71] if(gfx_init_chunky::y#1!=rangelast(0,$32)) goto gfx_init_chunky::@1 to $33
Simplifying constant evaluating to zero <CHUNKY in [12] *DTV_PLANEB_START_LO = <CHUNKY
Simplifying constant evaluating to zero (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4 in [20] *VIC_MEMORY = (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
Simplifying constant evaluating to zero (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4 in [20] *VICII_MEMORY = (byte)(word)CHUNKY&$3fff/$40|>(word)CHUNKY&$3fff/4
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero (byte*)CIA2 in [19] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A) = 3^(byte)(word)CHUNKY/$4000
Successful SSA optimization PassNSimplifyExpressionWithZero
@ -528,8 +528,8 @@ main: scope:[main] from
main::@6: scope:[main] from main
[4] *DTV_FEATURE = DTV_FEATURE_ENABLE
[5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF
[6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[8] *DTV_PLANEB_START_LO = 0
[9] *DTV_PLANEB_START_MI = >CHUNKY
[10] *DTV_PLANEB_START_HI = 0
@ -538,7 +538,7 @@ main::@6: scope:[main] from main
[13] *DTV_PLANEB_MODULO_HI = 0
[14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[15] *((byte*)CIA2) = 3^(byte)(word)CHUNKY/$4000
[16] *VIC_MEMORY = 0
[16] *VICII_MEMORY = 0
to:main::@1
main::@1: scope:[main] from main::@1 main::@6
[17] main::j#2 = phi( main::@1/main::j#1, main::@6/0 )
@ -548,7 +548,7 @@ main::@1: scope:[main] from main::@1 main::@6
to:main::@2
main::@2: scope:[main] from main::@1 main::@5
asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize }
[22] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3
[22] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3
[23] *BORDER_COLOR = 0
to:main::@3
main::@3: scope:[main] from main::@2 main::@3
@ -560,8 +560,8 @@ main::@4: scope:[main] from main::@3
main::@5: scope:[main] from main::@4 main::@5
[26] main::rst#1 = *RASTER
[27] main::$3 = main::rst#1 & 7
[28] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3
[29] *VIC_CONTROL = main::$4
[28] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3
[29] *VICII_CONTROL = main::$4
[30] main::$5 = main::rst#1 << 4
[31] *BORDER_COLOR = main::$5
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
@ -702,8 +702,8 @@ Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always
Statement [2] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *DTV_PLANEB_START_LO = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *DTV_PLANEB_START_MI = >CHUNKY [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *DTV_PLANEB_START_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
@ -712,12 +712,12 @@ Statement [12] *DTV_PLANEB_MODULO_LO = 0 [ ] ( [ ] { } ) always clobbers reg b
Statement [13] *DTV_PLANEB_MODULO_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [15] *((byte*)CIA2) = 3^(byte)(word)CHUNKY/$4000 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] *VIC_MEMORY = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] *VICII_MEMORY = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x
Statement [22] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [23] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [24] if(*RASTER!=$42) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [28] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Statement [28] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::rst#1 ]
Statement [30] main::$5 = main::rst#1 << 4 [ main::rst#1 main::$5 ] ( [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a
Statement [38] if(gfx_init_chunky::gfxb#3!=$8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] { } ) always clobbers reg byte a
@ -734,8 +734,8 @@ Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always
Statement [2] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL [ ] ( [ ] { } ) always clobbers reg byte a
Statement [8] *DTV_PLANEB_START_LO = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [9] *DTV_PLANEB_START_MI = >CHUNKY [ ] ( [ ] { } ) always clobbers reg byte a
Statement [10] *DTV_PLANEB_START_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
@ -744,13 +744,13 @@ Statement [12] *DTV_PLANEB_MODULO_LO = 0 [ ] ( [ ] { } ) always clobbers reg b
Statement [13] *DTV_PLANEB_MODULO_HI = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [15] *((byte*)CIA2) = 3^(byte)(word)CHUNKY/$4000 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] *VIC_MEMORY = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [16] *VICII_MEMORY = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement asm { ldx#$ff rff: cpxRASTER bnerff stabilize: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop cpxRASTER beqeat+0 eat: inx cpx#$08 bnestabilize } always clobbers reg byte x
Statement [22] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [22] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [23] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [24] if(*RASTER!=$42) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [27] main::$3 = main::rst#1 & 7 [ main::rst#1 main::$3 ] ( [ main::rst#1 main::$3 ] { } ) always clobbers reg byte a
Statement [28] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Statement [28] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
Statement [30] main::$5 = main::rst#1 << 4 [ main::rst#1 main::$5 ] ( [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a
Statement [38] if(gfx_init_chunky::gfxb#3!=$8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] { } ) always clobbers reg byte a
Statement [43] gfx_init_chunky::$5 = gfx_init_chunky::x#2 + gfx_init_chunky::y#6 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] { } ) always clobbers reg byte a
@ -815,11 +815,11 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_ECM = $40
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -833,9 +833,9 @@ ASSEMBLER BEFORE OPTIMIZATION
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -885,12 +885,12 @@ main: {
// 8BPP Pixel Cell Mode
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF
sta DTV_CONTROL
// [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL -- _deref_pbuc1=vbuc2
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL -- _deref_pbuc1=vbuc2
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// [8] *DTV_PLANEB_START_LO = 0 -- _deref_pbuc1=vbuc2
// Plane B: CHUNKY
lda #0
@ -918,11 +918,11 @@ main: {
// Set VIC Bank bits to output - all others to input
lda #3^CHUNKY/$4000
sta CIA2
// [16] *VIC_MEMORY = 0 -- _deref_pbuc1=vbuc2
// [16] *VICII_MEMORY = 0 -- _deref_pbuc1=vbuc2
// Set VIC Bank
// VIC memory
lda #0
sta VIC_MEMORY
sta VICII_MEMORY
// [17] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
__b1_from___b6:
// [17] phi main::j#2 = 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1
@ -984,9 +984,9 @@ main: {
inx
cpx #8
bne stabilize
// [22] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// [22] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// [23] *BORDER_COLOR = 0 -- _deref_pbuc1=vbuc2
lda #0
sta BORDER_COLOR
@ -1027,10 +1027,10 @@ main: {
// [27] main::$3 = main::rst#1 & 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
// [28] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VIC_DEN|VIC_ECM|VIC_RSEL
// [29] *VIC_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VIC_CONTROL
// [28] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VICII_DEN|VICII_ECM|VICII_RSEL
// [29] *VICII_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VICII_CONTROL
// [30] main::$5 = main::rst#1 << 4 -- vbuaa=vbuxx_rol_4
txa
asl
@ -1310,14 +1310,14 @@ const nomodify byte* PROCPORT_DDR = (byte*) 0
const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*) 53266
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VIC_CONTROL2 = (byte*) 53270
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL2 = (byte*) 53270
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
const byte* dtvSetCpuBankSegment1::cpuBank = (byte*) 255
byte dtvSetCpuBankSegment1::cpuBankIdx
@ -1387,11 +1387,11 @@ Score: 19882
.segment Basic
:BasicUpstart(main)
// Global Constants & labels
.const VIC_ECM = $40
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -1405,9 +1405,9 @@ Score: 19882
.const OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
.label RASTER = $d012
.label BORDER_COLOR = $d020
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -1460,14 +1460,14 @@ main: {
// 8BPP Pixel Cell Mode
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_COLORRAM_OFF|DTV_CHUNKY|DTV_BADLINE_OFF
sta DTV_CONTROL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
// [6] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM | VIC_CSEL
// [7] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL -- _deref_pbuc1=vbuc2
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
// [6] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM | VICII_CSEL
// [7] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL -- _deref_pbuc1=vbuc2
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEB_START_LO = < CHUNKY
// [8] *DTV_PLANEB_START_LO = 0 -- _deref_pbuc1=vbuc2
// Plane B: CHUNKY
@ -1502,12 +1502,12 @@ main: {
// Set VIC Bank bits to output - all others to input
lda #3^CHUNKY/$4000
sta CIA2
// *VIC_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((>(((word)CHUNKY)&$3fff))/4)
// [16] *VIC_MEMORY = 0 -- _deref_pbuc1=vbuc2
// *VICII_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((>(((word)CHUNKY)&$3fff))/4)
// [16] *VICII_MEMORY = 0 -- _deref_pbuc1=vbuc2
// Set VIC Bank
// VIC memory
lda #0
sta VIC_MEMORY
sta VICII_MEMORY
// [17] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
// [17] phi main::j#2 = 0 [phi:main::@6->main::@1#0] -- vbuxx=vbuc1
tax
@ -1567,10 +1567,10 @@ main: {
inx
cpx #8
bne stabilize
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3
// [22] *VIC_CONTROL = VIC_DEN|VIC_ECM|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | 3
// [22] *VICII_CONTROL = VICII_DEN|VICII_ECM|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_ECM|VICII_RSEL|3
sta VICII_CONTROL
// *BORDER_COLOR = 0
// [23] *BORDER_COLOR = 0 -- _deref_pbuc1=vbuc2
lda #0
@ -1612,12 +1612,12 @@ main: {
// [27] main::$3 = main::rst#1 & 7 -- vbuaa=vbuxx_band_vbuc1
txa
and #7
// VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
// [28] main::$4 = VIC_DEN|VIC_ECM|VIC_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VIC_DEN|VIC_ECM|VIC_RSEL
// *VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | (rst&7)
// [29] *VIC_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VIC_CONTROL
// VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
// [28] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 -- vbuaa=vbuc1_bor_vbuaa
ora #VICII_DEN|VICII_ECM|VICII_RSEL
// *VICII_CONTROL = VICII_DEN | VICII_ECM | VICII_RSEL | (rst&7)
// [29] *VICII_CONTROL = main::$4 -- _deref_pbuc1=vbuaa
sta VICII_CONTROL
// rst*$10
// [30] main::$5 = main::rst#1 << 4 -- vbuaa=vbuxx_rol_4
txa

View File

@ -22,14 +22,14 @@ const nomodify byte* PROCPORT_DDR = (byte*) 0
const nomodify byte PROCPORT_DDR_MEMORY_MASK = 7
const nomodify byte PROCPORT_RAM_IO = 5
const nomodify byte* RASTER = (byte*) 53266
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VIC_CONTROL2 = (byte*) 53270
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL2 = (byte*) 53270
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void dtvSetCpuBankSegment1(byte dtvSetCpuBankSegment1::cpuBankIdx)
const byte* dtvSetCpuBankSegment1::cpuBank = (byte*) 255
byte dtvSetCpuBankSegment1::cpuBankIdx

View File

@ -12,12 +12,12 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_ECM = $40
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -81,9 +81,9 @@
.const OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
// Number of form fields
.const form_fields_cnt = $24
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -126,15 +126,15 @@
// Memory address of VIC Graphics is GraphicsBank*$10000
.label DTV_GRAPHICS_VIC_BANK = $d03d
// VIC Screens
.label VIC_SCREEN0 = $4000
.label VIC_SCREEN1 = $4400
.label VIC_SCREEN2 = $4800
.label VIC_SCREEN3 = $4c00
.label VIC_SCREEN4 = $5000
.label VICII_SCREEN0 = $4000
.label VICII_SCREEN1 = $4400
.label VICII_SCREEN2 = $4800
.label VICII_SCREEN3 = $4c00
.label VICII_SCREEN4 = $5000
// VIC Charset from ROM
.label VIC_CHARSET_ROM = $5800
.label VICII_CHARSET_ROM = $5800
// VIC Bitmap
.label VIC_BITMAP = $6000
.label VICII_BITMAP = $6000
// Screen containing the FORM
.label FORM_SCREEN = $400
// Charset used for the FORM
@ -162,18 +162,18 @@
.label form_b_step_lo = form_fields_val+$15
.label form_b_mod_hi = form_fields_val+$16
.label form_b_mod_lo = form_fields_val+$17
.label form_vic_screen = form_fields_val+$18
.label form_vic_gfx = form_fields_val+$19
.label form_vic_cols = form_fields_val+$1a
.label form_VICII_screen = form_fields_val+$18
.label form_VICII_gfx = form_fields_val+$19
.label form_VICII_cols = form_fields_val+$1a
.label form_dtv_palet = form_fields_val+$1b
.label form_vic_bg0_hi = form_fields_val+$1c
.label form_vic_bg0_lo = form_fields_val+$1d
.label form_vic_bg1_hi = form_fields_val+$1e
.label form_vic_bg1_lo = form_fields_val+$1f
.label form_vic_bg2_hi = form_fields_val+$20
.label form_vic_bg2_lo = form_fields_val+$21
.label form_vic_bg3_hi = form_fields_val+$22
.label form_vic_bg3_lo = form_fields_val+$23
.label form_VICII_bg0_hi = form_fields_val+$1c
.label form_VICII_bg0_lo = form_fields_val+$1d
.label form_VICII_bg1_hi = form_fields_val+$1e
.label form_VICII_bg1_lo = form_fields_val+$1f
.label form_VICII_bg2_hi = form_fields_val+$20
.label form_VICII_bg2_lo = form_fields_val+$21
.label form_VICII_bg3_hi = form_fields_val+$22
.label form_VICII_bg3_lo = form_fields_val+$23
.label print_char_cursor = $1a
.label print_line_cursor = 7
.label print_screen = 7
@ -245,8 +245,8 @@ gfx_init: {
jsr gfx_init_screen4
// gfx_init_charset()
jsr gfx_init_charset
// gfx_init_vic_bitmap()
jsr gfx_init_vic_bitmap
// gfx_init_VICII_bitmap()
jsr gfx_init_VICII_bitmap
// gfx_init_plane_8bppchunky()
jsr gfx_init_plane_8bppchunky
// gfx_init_plane_charset8()
@ -330,12 +330,12 @@ form_mode: {
// DTV Graphics Mode
lda #0
sta DTV_CONTROL
// VICII->CONTROL1 = VIC_DEN|VIC_RSEL|3
// VICII->CONTROL1 = VICII_DEN|VICII_RSEL|3
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|3
lda #VICII_DEN|VICII_RSEL|3
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1
// VICII->CONTROL2 = VIC_CSEL
lda #VIC_CSEL
// VICII->CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2
// VICII->MEMORY = (byte)((((word)FORM_SCREEN&$3fff)/$40)|(((word)FORM_CHARSET&$3fff)/$400))
// VIC Memory Pointers
@ -421,7 +421,7 @@ gfx_mode: {
.label __83 = 7
.label plane_a = 9
.label plane_b = 9
.label vic_colors = 3
.label VICII_colors = 3
.label col = 5
.label cy = $e
// if(*form_ctrl_line!=0)
@ -484,33 +484,33 @@ gfx_mode: {
lda form_ctrl_ecm
cmp #0
beq __b11
ldx #VIC_DEN|VIC_RSEL|3|VIC_ECM
ldx #VICII_DEN|VICII_RSEL|3|VICII_ECM
jmp __b7
__b11:
ldx #VIC_DEN|VIC_RSEL|3
ldx #VICII_DEN|VICII_RSEL|3
__b7:
// if(*form_ctrl_bmm!=0)
lda form_ctrl_bmm
cmp #0
beq __b8
// vic_control = vic_control | VIC_BMM
// VICII_control = VICII_control | VICII_BMM
txa
ora #VIC_BMM
ora #VICII_BMM
tax
__b8:
// *VIC_CONTROL = vic_control
stx VIC_CONTROL
// *VICII_CONTROL = VICII_control
stx VICII_CONTROL
// if(*form_ctrl_mcm!=0)
lda form_ctrl_mcm
cmp #0
beq __b12
lda #VIC_CSEL|VIC_MCM
lda #VICII_CSEL|VICII_MCM
jmp __b9
__b12:
lda #VIC_CSEL
lda #VICII_CSEL
__b9:
// *VIC_CONTROL2 = vic_control2
sta VIC_CONTROL2
// *VICII_CONTROL2 = VICII_control2
sta VICII_CONTROL2
// *form_a_start_hi*$10
lda form_a_start_hi
asl
@ -667,22 +667,22 @@ gfx_mode: {
// VIC Graphics Bank
lda #3
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR
// CIA2->PORT_A = %00000011 ^ (byte)((word)VIC_SCREEN0/$4000)
// CIA2->PORT_A = %00000011 ^ (byte)((word)VICII_SCREEN0/$4000)
// Set VIC Bank bits to output - all others to input
lda #3^VIC_SCREEN0/$4000
lda #3^VICII_SCREEN0/$4000
sta CIA2
// get_vic_screen(*form_vic_screen)
lda form_vic_screen
jsr get_vic_screen
// get_vic_screen(*form_vic_screen)
// (word)get_vic_screen(*form_vic_screen)&$3fff
// get_VICII_screen(*form_VICII_screen)
lda form_VICII_screen
jsr get_VICII_screen
// get_VICII_screen(*form_VICII_screen)
// (word)get_VICII_screen(*form_VICII_screen)&$3fff
lda.z __47
and #<$3fff
sta.z __47
lda.z __47+1
and #>$3fff
sta.z __47+1
// ((word)get_vic_screen(*form_vic_screen)&$3fff)/$40
// ((word)get_VICII_screen(*form_VICII_screen)&$3fff)/$40
lda.z __48
asl
sta.z $ff
@ -695,33 +695,33 @@ gfx_mode: {
asl.z $ff
rol.z __48
rol.z __48+1
// get_vic_charset(*form_vic_gfx)
lda form_vic_gfx
jsr get_vic_charset
// (word)get_vic_charset(*form_vic_gfx)&$3fff
// get_VICII_charset(*form_VICII_gfx)
lda form_VICII_gfx
jsr get_VICII_charset
// (word)get_VICII_charset(*form_VICII_gfx)&$3fff
lda.z __50
and #<$3fff
sta.z __50
lda.z __50+1
and #>$3fff
sta.z __50+1
// >((word)get_vic_charset(*form_vic_gfx)&$3fff)
// (>((word)get_vic_charset(*form_vic_gfx)&$3fff))/4
// >((word)get_VICII_charset(*form_VICII_gfx)&$3fff)
// (>((word)get_VICII_charset(*form_VICII_gfx)&$3fff))/4
lsr
lsr
sta.z __52
// (byte)(((word)get_vic_screen(*form_vic_screen)&$3fff)/$40) | ((>((word)get_vic_charset(*form_vic_gfx)&$3fff))/4)
// (byte)(((word)get_VICII_screen(*form_VICII_screen)&$3fff)/$40) | ((>((word)get_VICII_charset(*form_VICII_gfx)&$3fff))/4)
lda.z __48
ora.z __52
// *VIC_MEMORY = (byte)(((word)get_vic_screen(*form_vic_screen)&$3fff)/$40) | ((>((word)get_vic_charset(*form_vic_gfx)&$3fff))/4)
// *VICII_MEMORY = (byte)(((word)get_VICII_screen(*form_VICII_screen)&$3fff)/$40) | ((>((word)get_VICII_charset(*form_VICII_gfx)&$3fff))/4)
// Set VIC Bank
// VIC memory
sta VIC_MEMORY
// get_vic_screen(*form_vic_cols)
lda form_vic_cols
jsr get_vic_screen
// get_vic_screen(*form_vic_cols)
// vic_colors = get_vic_screen(*form_vic_cols)
sta VICII_MEMORY
// get_VICII_screen(*form_VICII_cols)
lda form_VICII_cols
jsr get_VICII_screen
// get_VICII_screen(*form_VICII_cols)
// VICII_colors = get_VICII_screen(*form_VICII_cols)
lda #0
sta.z cy
lda #<COLS
@ -731,18 +731,18 @@ gfx_mode: {
__b19:
ldx #0
__b20:
// *col++ = *vic_colors++
// *col++ = *VICII_colors++
ldy #0
lda (vic_colors),y
lda (VICII_colors),y
sta (col),y
// *col++ = *vic_colors++;
// *col++ = *VICII_colors++;
inc.z col
bne !+
inc.z col+1
!:
inc.z vic_colors
inc.z VICII_colors
bne !+
inc.z vic_colors+1
inc.z VICII_colors+1
!:
// for(byte cx: 0..39)
inx
@ -757,45 +757,45 @@ gfx_mode: {
// Background colors
lda #0
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
// *form_vic_bg0_hi*$10
lda form_vic_bg0_hi
// *form_VICII_bg0_hi*$10
lda form_VICII_bg0_hi
asl
asl
asl
asl
// *form_vic_bg0_hi*$10|*form_vic_bg0_lo
ora form_vic_bg0_lo
// VICII->BG_COLOR = *form_vic_bg0_hi*$10|*form_vic_bg0_lo
// *form_VICII_bg0_hi*$10|*form_VICII_bg0_lo
ora form_VICII_bg0_lo
// VICII->BG_COLOR = *form_VICII_bg0_hi*$10|*form_VICII_bg0_lo
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR
// *form_vic_bg1_hi*$10
lda form_vic_bg1_hi
// *form_VICII_bg1_hi*$10
lda form_VICII_bg1_hi
asl
asl
asl
asl
// *form_vic_bg1_hi*$10|*form_vic_bg1_lo
ora form_vic_bg1_lo
// VICII->BG_COLOR1 = *form_vic_bg1_hi*$10|*form_vic_bg1_lo
// *form_VICII_bg1_hi*$10|*form_VICII_bg1_lo
ora form_VICII_bg1_lo
// VICII->BG_COLOR1 = *form_VICII_bg1_hi*$10|*form_VICII_bg1_lo
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1
// *form_vic_bg2_hi*$10
lda form_vic_bg2_hi
// *form_VICII_bg2_hi*$10
lda form_VICII_bg2_hi
asl
asl
asl
asl
// *form_vic_bg2_hi*$10|*form_vic_bg2_lo
ora form_vic_bg2_lo
// VICII->BG_COLOR2 = *form_vic_bg2_hi*$10|*form_vic_bg2_lo
// *form_VICII_bg2_hi*$10|*form_VICII_bg2_lo
ora form_VICII_bg2_lo
// VICII->BG_COLOR2 = *form_VICII_bg2_hi*$10|*form_VICII_bg2_lo
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2
// *form_vic_bg3_hi*$10
lda form_vic_bg3_hi
// *form_VICII_bg3_hi*$10
lda form_VICII_bg3_hi
asl
asl
asl
asl
// *form_vic_bg3_hi*$10|*form_vic_bg3_lo
ora form_vic_bg3_lo
// VICII->BG_COLOR3 = *form_vic_bg3_hi*$10|*form_vic_bg3_lo
// *form_VICII_bg3_hi*$10|*form_VICII_bg3_lo
ora form_VICII_bg3_lo
// VICII->BG_COLOR3 = *form_VICII_bg3_hi*$10|*form_VICII_bg3_lo
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3
// if(*form_dtv_palet==0)
// DTV Palette
@ -847,9 +847,9 @@ gfx_init_screen0: {
.label __1 = $10
.label ch = 3
.label cy = $11
lda #<VIC_SCREEN0
lda #<VICII_SCREEN0
sta.z ch
lda #>VIC_SCREEN0
lda #>VICII_SCREEN0
sta.z ch+1
lda #0
sta.z cy
@ -894,9 +894,9 @@ gfx_init_screen0: {
gfx_init_screen1: {
.label ch = 5
.label cy = 2
lda #<VIC_SCREEN1
lda #<VICII_SCREEN1
sta.z ch
lda #>VIC_SCREEN1
lda #>VICII_SCREEN1
sta.z ch+1
lda #0
sta.z cy
@ -934,9 +934,9 @@ gfx_init_screen2: {
.label col2 = $11
.label ch = 3
.label cy = $e
lda #<VIC_SCREEN2
lda #<VICII_SCREEN2
sta.z ch
lda #>VIC_SCREEN2
lda #>VICII_SCREEN2
sta.z ch+1
lda #0
sta.z cy
@ -989,9 +989,9 @@ gfx_init_screen3: {
.label __1 = $12
.label ch = 3
.label cy = $e
lda #<VIC_SCREEN3
lda #<VICII_SCREEN3
sta.z ch
lda #>VIC_SCREEN3
lda #>VICII_SCREEN3
sta.z ch+1
lda #0
sta.z cy
@ -1038,9 +1038,9 @@ gfx_init_screen4: {
.label cy = $11
lda #0
sta.z cy
lda #<VIC_SCREEN4
lda #<VICII_SCREEN4
sta.z ch
lda #>VIC_SCREEN4
lda #>VICII_SCREEN4
sta.z ch+1
__b1:
ldx #0
@ -1075,9 +1075,9 @@ gfx_init_charset: {
sta PROCPORT
lda #0
sta.z c
lda #<VIC_CHARSET_ROM
lda #<VICII_CHARSET_ROM
sta.z charset
lda #>VIC_CHARSET_ROM
lda #>VICII_CHARSET_ROM
sta.z charset+1
lda #<CHARGEN
sta.z chargen
@ -1115,10 +1115,10 @@ gfx_init_charset: {
rts
}
// Initialize VIC bitmap
gfx_init_vic_bitmap: {
gfx_init_VICII_bitmap: {
.const lines_cnt = 9
.label l = 2
// bitmap_init(VIC_BITMAP)
// bitmap_init(VICII_BITMAP)
// Draw some lines on the bitmap
jsr bitmap_init
// bitmap_clear()
@ -2099,13 +2099,13 @@ get_plane: {
sta.z return+3
rts
__b1:
lda #<VIC_SCREEN0
lda #<VICII_SCREEN0
sta.z return
lda #>VIC_SCREEN0
lda #>VICII_SCREEN0
sta.z return+1
lda #<VIC_SCREEN0>>$10
lda #<VICII_SCREEN0>>$10
sta.z return+2
lda #>VIC_SCREEN0>>$10
lda #>VICII_SCREEN0>>$10
sta.z return+3
rts
__b2:
@ -2149,53 +2149,53 @@ get_plane: {
sta.z return+3
rts
__b6:
lda #<VIC_SCREEN1
lda #<VICII_SCREEN1
sta.z return
lda #>VIC_SCREEN1
lda #>VICII_SCREEN1
sta.z return+1
lda #<VIC_SCREEN1>>$10
lda #<VICII_SCREEN1>>$10
sta.z return+2
lda #>VIC_SCREEN1>>$10
lda #>VICII_SCREEN1>>$10
sta.z return+3
rts
__b7:
lda #<VIC_SCREEN2
lda #<VICII_SCREEN2
sta.z return
lda #>VIC_SCREEN2
lda #>VICII_SCREEN2
sta.z return+1
lda #<VIC_SCREEN2>>$10
lda #<VICII_SCREEN2>>$10
sta.z return+2
lda #>VIC_SCREEN2>>$10
lda #>VICII_SCREEN2>>$10
sta.z return+3
rts
__b8:
lda #<VIC_SCREEN3
lda #<VICII_SCREEN3
sta.z return
lda #>VIC_SCREEN3
lda #>VICII_SCREEN3
sta.z return+1
lda #<VIC_SCREEN3>>$10
lda #<VICII_SCREEN3>>$10
sta.z return+2
lda #>VIC_SCREEN3>>$10
lda #>VICII_SCREEN3>>$10
sta.z return+3
rts
__b9:
lda #<VIC_BITMAP
lda #<VICII_BITMAP
sta.z return
lda #>VIC_BITMAP
lda #>VICII_BITMAP
sta.z return+1
lda #<VIC_BITMAP>>$10
lda #<VICII_BITMAP>>$10
sta.z return+2
lda #>VIC_BITMAP>>$10
lda #>VICII_BITMAP>>$10
sta.z return+3
rts
__b10:
lda #<VIC_CHARSET_ROM
lda #<VICII_CHARSET_ROM
sta.z return
lda #>VIC_CHARSET_ROM
lda #>VICII_CHARSET_ROM
sta.z return+1
lda #<VIC_CHARSET_ROM>>$10
lda #<VICII_CHARSET_ROM>>$10
sta.z return+2
lda #>VIC_CHARSET_ROM>>$10
lda #>VICII_CHARSET_ROM>>$10
sta.z return+3
rts
__b11:
@ -2231,8 +2231,8 @@ get_plane: {
rts
}
// Get the VIC screen address from the screen index
// get_vic_screen(byte register(A) idx)
get_vic_screen: {
// get_VICII_screen(byte register(A) idx)
get_VICII_screen: {
.label return = 3
// if(idx==0)
cmp #0
@ -2249,40 +2249,40 @@ get_vic_screen: {
// if(idx==4)
cmp #4
bne __b1
lda #<VIC_SCREEN4
lda #<VICII_SCREEN4
sta.z return
lda #>VIC_SCREEN4
lda #>VICII_SCREEN4
sta.z return+1
rts
__b1:
lda #<VIC_SCREEN0
lda #<VICII_SCREEN0
sta.z return
lda #>VIC_SCREEN0
lda #>VICII_SCREEN0
sta.z return+1
rts
__b2:
lda #<VIC_SCREEN1
lda #<VICII_SCREEN1
sta.z return
lda #>VIC_SCREEN1
lda #>VICII_SCREEN1
sta.z return+1
rts
__b3:
lda #<VIC_SCREEN2
lda #<VICII_SCREEN2
sta.z return
lda #>VIC_SCREEN2
lda #>VICII_SCREEN2
sta.z return+1
rts
__b4:
lda #<VIC_SCREEN3
lda #<VICII_SCREEN3
sta.z return
lda #>VIC_SCREEN3
lda #>VICII_SCREEN3
sta.z return+1
// }
rts
}
// Get the VIC charset/bitmap address from the index
// get_vic_charset(byte register(A) idx)
get_vic_charset: {
// get_VICII_charset(byte register(A) idx)
get_VICII_charset: {
.label return = 7
// if(idx==0)
cmp #0
@ -2290,15 +2290,15 @@ get_vic_charset: {
// if(idx==1)
cmp #1
bne __b1
lda #<VIC_BITMAP
lda #<VICII_BITMAP
sta.z return
lda #>VIC_BITMAP
lda #>VICII_BITMAP
sta.z return+1
rts
__b1:
lda #<VIC_CHARSET_ROM
lda #<VICII_CHARSET_ROM
sta.z return
lda #>VIC_CHARSET_ROM
lda #>VICII_CHARSET_ROM
sta.z return+1
// }
rts
@ -2474,7 +2474,7 @@ bitmap_init: {
// bitmap_plot_xlo[x] = x&$f8
sta bitmap_plot_xlo,x
// bitmap_plot_xhi[x] = >bitmap
lda #>VIC_BITMAP
lda #>VICII_BITMAP
sta bitmap_plot_xhi,x
// bitmap_plot_bit[x] = bits
tya

View File

@ -61,7 +61,7 @@ gfx_init::@5: scope:[gfx_init] from gfx_init::@4
to:gfx_init::@6
gfx_init::@6: scope:[gfx_init] from gfx_init::@5
[27] phi()
[28] call gfx_init_vic_bitmap
[28] call gfx_init_VICII_bitmap
to:gfx_init::@7
gfx_init::@7: scope:[gfx_init] from gfx_init::@6
[29] phi()
@ -143,8 +143,8 @@ form_mode::@16: scope:[form_mode] from form_mode::@15
[67] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[68] *((byte*)CIA2) = 3
[69] *DTV_CONTROL = 0
[70] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VIC_DEN|VIC_RSEL|3
[71] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = VIC_CSEL
[70] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = VICII_DEN|VICII_RSEL|3
[71] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = VICII_CSEL
[72] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_MEMORY) = (byte)(word)FORM_SCREEN&$3fff/$40|(word)FORM_CHARSET&$3fff/$400
[73] *DTV_PLANEA_START_LO = 0
[74] *DTV_PLANEA_START_MI = >FORM_SCREEN
@ -249,23 +249,23 @@ gfx_mode::@16: scope:[gfx_mode] from gfx_mode::@6
[118] phi()
to:gfx_mode::@7
gfx_mode::@7: scope:[gfx_mode] from gfx_mode::@16 gfx_mode::@6
[119] gfx_mode::vic_control#5 = phi( gfx_mode::@16/VIC_DEN|VIC_RSEL|3|VIC_ECM, gfx_mode::@6/VIC_DEN|VIC_RSEL|3 )
[119] gfx_mode::VICII_control#5 = phi( gfx_mode::@16/VICII_DEN|VICII_RSEL|3|VICII_ECM, gfx_mode::@6/VICII_DEN|VICII_RSEL|3 )
[120] if(*form_ctrl_bmm==0) goto gfx_mode::@8
to:gfx_mode::@17
gfx_mode::@17: scope:[gfx_mode] from gfx_mode::@7
[121] gfx_mode::vic_control#2 = gfx_mode::vic_control#5 | VIC_BMM
[121] gfx_mode::VICII_control#2 = gfx_mode::VICII_control#5 | VICII_BMM
to:gfx_mode::@8
gfx_mode::@8: scope:[gfx_mode] from gfx_mode::@17 gfx_mode::@7
[122] gfx_mode::vic_control#4 = phi( gfx_mode::@17/gfx_mode::vic_control#2, gfx_mode::@7/gfx_mode::vic_control#5 )
[123] *VIC_CONTROL = gfx_mode::vic_control#4
[122] gfx_mode::VICII_control#4 = phi( gfx_mode::@17/gfx_mode::VICII_control#2, gfx_mode::@7/gfx_mode::VICII_control#5 )
[123] *VICII_CONTROL = gfx_mode::VICII_control#4
[124] if(*form_ctrl_mcm==0) goto gfx_mode::@9
to:gfx_mode::@18
gfx_mode::@18: scope:[gfx_mode] from gfx_mode::@8
[125] phi()
to:gfx_mode::@9
gfx_mode::@9: scope:[gfx_mode] from gfx_mode::@18 gfx_mode::@8
[126] gfx_mode::vic_control2#2 = phi( gfx_mode::@18/VIC_CSEL|VIC_MCM, gfx_mode::@8/VIC_CSEL )
[127] *VIC_CONTROL2 = gfx_mode::vic_control2#2
[126] gfx_mode::VICII_control2#2 = phi( gfx_mode::@18/VICII_CSEL|VICII_MCM, gfx_mode::@8/VICII_CSEL )
[127] *VICII_CONTROL2 = gfx_mode::VICII_control2#2
[128] gfx_mode::$18 = *form_a_start_hi << 4
[129] gfx_mode::plane_a_offs#0 = gfx_mode::$18 | *form_a_start_lo
[130] get_plane::idx#0 = *form_a_pattern
@ -317,46 +317,46 @@ gfx_mode::@28: scope:[gfx_mode] from gfx_mode::@27
[172] *DTV_PLANEB_MODULO_LO = gfx_mode::$45
[173] *DTV_PLANEB_MODULO_HI = 0
[174] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[175] *((byte*)CIA2) = 3^(byte)(word)VIC_SCREEN0/$4000
[176] get_vic_screen::idx#0 = *form_vic_screen
[177] call get_vic_screen
[178] get_vic_screen::return#10 = get_vic_screen::return#5
[175] *((byte*)CIA2) = 3^(byte)(word)VICII_SCREEN0/$4000
[176] get_VICII_screen::idx#0 = *form_VICII_screen
[177] call get_VICII_screen
[178] get_VICII_screen::return#10 = get_VICII_screen::return#5
to:gfx_mode::@29
gfx_mode::@29: scope:[gfx_mode] from gfx_mode::@28
[179] gfx_mode::$82 = get_vic_screen::return#10
[179] gfx_mode::$82 = get_VICII_screen::return#10
[180] gfx_mode::$47 = (word)gfx_mode::$82 & $3fff
[181] gfx_mode::$48 = gfx_mode::$47 >> 6
[182] get_vic_charset::idx#0 = *form_vic_gfx
[183] call get_vic_charset
[184] get_vic_charset::return#4 = get_vic_charset::return#2
[182] get_VICII_charset::idx#0 = *form_VICII_gfx
[183] call get_VICII_charset
[184] get_VICII_charset::return#4 = get_VICII_charset::return#2
to:gfx_mode::@30
gfx_mode::@30: scope:[gfx_mode] from gfx_mode::@29
[185] gfx_mode::$83 = get_vic_charset::return#4
[185] gfx_mode::$83 = get_VICII_charset::return#4
[186] gfx_mode::$50 = (word)gfx_mode::$83 & $3fff
[187] gfx_mode::$51 = > gfx_mode::$50
[188] gfx_mode::$52 = gfx_mode::$51 >> 2
[189] gfx_mode::$84 = (byte)gfx_mode::$48
[190] gfx_mode::$53 = gfx_mode::$84 | gfx_mode::$52
[191] *VIC_MEMORY = gfx_mode::$53
[192] get_vic_screen::idx#1 = *form_vic_cols
[193] call get_vic_screen
[194] get_vic_screen::return#11 = get_vic_screen::return#5
[191] *VICII_MEMORY = gfx_mode::$53
[192] get_VICII_screen::idx#1 = *form_VICII_cols
[193] call get_VICII_screen
[194] get_VICII_screen::return#11 = get_VICII_screen::return#5
to:gfx_mode::@31
gfx_mode::@31: scope:[gfx_mode] from gfx_mode::@30
[195] gfx_mode::vic_colors#0 = get_vic_screen::return#11
[195] gfx_mode::VICII_colors#0 = get_VICII_screen::return#11
to:gfx_mode::@19
gfx_mode::@19: scope:[gfx_mode] from gfx_mode::@21 gfx_mode::@31
[196] gfx_mode::cy#4 = phi( gfx_mode::@21/gfx_mode::cy#1, gfx_mode::@31/0 )
[196] gfx_mode::col#3 = phi( gfx_mode::@21/gfx_mode::col#1, gfx_mode::@31/COLS )
[196] gfx_mode::vic_colors#3 = phi( gfx_mode::@21/gfx_mode::vic_colors#1, gfx_mode::@31/gfx_mode::vic_colors#0 )
[196] gfx_mode::VICII_colors#3 = phi( gfx_mode::@21/gfx_mode::VICII_colors#1, gfx_mode::@31/gfx_mode::VICII_colors#0 )
to:gfx_mode::@20
gfx_mode::@20: scope:[gfx_mode] from gfx_mode::@19 gfx_mode::@20
[197] gfx_mode::cx#2 = phi( gfx_mode::@19/0, gfx_mode::@20/gfx_mode::cx#1 )
[197] gfx_mode::col#2 = phi( gfx_mode::@19/gfx_mode::col#3, gfx_mode::@20/gfx_mode::col#1 )
[197] gfx_mode::vic_colors#2 = phi( gfx_mode::@19/gfx_mode::vic_colors#3, gfx_mode::@20/gfx_mode::vic_colors#1 )
[198] *gfx_mode::col#2 = *gfx_mode::vic_colors#2
[197] gfx_mode::VICII_colors#2 = phi( gfx_mode::@19/gfx_mode::VICII_colors#3, gfx_mode::@20/gfx_mode::VICII_colors#1 )
[198] *gfx_mode::col#2 = *gfx_mode::VICII_colors#2
[199] gfx_mode::col#1 = ++ gfx_mode::col#2
[200] gfx_mode::vic_colors#1 = ++ gfx_mode::vic_colors#2
[200] gfx_mode::VICII_colors#1 = ++ gfx_mode::VICII_colors#2
[201] gfx_mode::cx#1 = ++ gfx_mode::cx#2
[202] if(gfx_mode::cx#1!=$28) goto gfx_mode::@20
to:gfx_mode::@21
@ -366,17 +366,17 @@ gfx_mode::@21: scope:[gfx_mode] from gfx_mode::@20
to:gfx_mode::@22
gfx_mode::@22: scope:[gfx_mode] from gfx_mode::@21
[205] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = 0
[206] gfx_mode::$55 = *form_vic_bg0_hi << 4
[207] gfx_mode::$56 = gfx_mode::$55 | *form_vic_bg0_lo
[206] gfx_mode::$55 = *form_VICII_bg0_hi << 4
[207] gfx_mode::$56 = gfx_mode::$55 | *form_VICII_bg0_lo
[208] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) = gfx_mode::$56
[209] gfx_mode::$57 = *form_vic_bg1_hi << 4
[210] gfx_mode::$58 = gfx_mode::$57 | *form_vic_bg1_lo
[209] gfx_mode::$57 = *form_VICII_bg1_hi << 4
[210] gfx_mode::$58 = gfx_mode::$57 | *form_VICII_bg1_lo
[211] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR1) = gfx_mode::$58
[212] gfx_mode::$59 = *form_vic_bg2_hi << 4
[213] gfx_mode::$60 = gfx_mode::$59 | *form_vic_bg2_lo
[212] gfx_mode::$59 = *form_VICII_bg2_hi << 4
[213] gfx_mode::$60 = gfx_mode::$59 | *form_VICII_bg2_lo
[214] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR2) = gfx_mode::$60
[215] gfx_mode::$61 = *form_vic_bg3_hi << 4
[216] gfx_mode::$62 = gfx_mode::$61 | *form_vic_bg3_lo
[215] gfx_mode::$61 = *form_VICII_bg3_hi << 4
[216] gfx_mode::$62 = gfx_mode::$61 | *form_VICII_bg3_lo
[217] *((byte*)VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR3) = gfx_mode::$62
[218] if(*form_dtv_palet==0) goto gfx_mode::@24
to:gfx_mode::@23
@ -417,7 +417,7 @@ gfx_init_screen0: scope:[gfx_init_screen0] from gfx_init
[236] phi()
to:gfx_init_screen0::@1
gfx_init_screen0::@1: scope:[gfx_init_screen0] from gfx_init_screen0 gfx_init_screen0::@3
[237] gfx_init_screen0::ch#3 = phi( gfx_init_screen0/VIC_SCREEN0, gfx_init_screen0::@3/gfx_init_screen0::ch#1 )
[237] gfx_init_screen0::ch#3 = phi( gfx_init_screen0/VICII_SCREEN0, gfx_init_screen0::@3/gfx_init_screen0::ch#1 )
[237] gfx_init_screen0::cy#4 = phi( gfx_init_screen0/0, gfx_init_screen0::@3/gfx_init_screen0::cy#1 )
to:gfx_init_screen0::@2
gfx_init_screen0::@2: scope:[gfx_init_screen0] from gfx_init_screen0::@1 gfx_init_screen0::@2
@ -445,7 +445,7 @@ gfx_init_screen1: scope:[gfx_init_screen1] from gfx_init::@1
[250] phi()
to:gfx_init_screen1::@1
gfx_init_screen1::@1: scope:[gfx_init_screen1] from gfx_init_screen1 gfx_init_screen1::@3
[251] gfx_init_screen1::ch#3 = phi( gfx_init_screen1/VIC_SCREEN1, gfx_init_screen1::@3/gfx_init_screen1::ch#1 )
[251] gfx_init_screen1::ch#3 = phi( gfx_init_screen1/VICII_SCREEN1, gfx_init_screen1::@3/gfx_init_screen1::ch#1 )
[251] gfx_init_screen1::cy#4 = phi( gfx_init_screen1/0, gfx_init_screen1::@3/gfx_init_screen1::cy#1 )
to:gfx_init_screen1::@2
gfx_init_screen1::@2: scope:[gfx_init_screen1] from gfx_init_screen1::@1 gfx_init_screen1::@2
@ -471,7 +471,7 @@ gfx_init_screen2: scope:[gfx_init_screen2] from gfx_init::@2
[262] phi()
to:gfx_init_screen2::@1
gfx_init_screen2::@1: scope:[gfx_init_screen2] from gfx_init_screen2 gfx_init_screen2::@3
[263] gfx_init_screen2::ch#3 = phi( gfx_init_screen2/VIC_SCREEN2, gfx_init_screen2::@3/gfx_init_screen2::ch#1 )
[263] gfx_init_screen2::ch#3 = phi( gfx_init_screen2/VICII_SCREEN2, gfx_init_screen2::@3/gfx_init_screen2::ch#1 )
[263] gfx_init_screen2::cy#4 = phi( gfx_init_screen2/0, gfx_init_screen2::@3/gfx_init_screen2::cy#1 )
to:gfx_init_screen2::@2
gfx_init_screen2::@2: scope:[gfx_init_screen2] from gfx_init_screen2::@1 gfx_init_screen2::@2
@ -500,7 +500,7 @@ gfx_init_screen3: scope:[gfx_init_screen3] from gfx_init::@3
[277] phi()
to:gfx_init_screen3::@1
gfx_init_screen3::@1: scope:[gfx_init_screen3] from gfx_init_screen3 gfx_init_screen3::@3
[278] gfx_init_screen3::ch#3 = phi( gfx_init_screen3/VIC_SCREEN3, gfx_init_screen3::@3/gfx_init_screen3::ch#1 )
[278] gfx_init_screen3::ch#3 = phi( gfx_init_screen3/VICII_SCREEN3, gfx_init_screen3::@3/gfx_init_screen3::ch#1 )
[278] gfx_init_screen3::cy#4 = phi( gfx_init_screen3/0, gfx_init_screen3::@3/gfx_init_screen3::cy#1 )
to:gfx_init_screen3::@2
gfx_init_screen3::@2: scope:[gfx_init_screen3] from gfx_init_screen3::@1 gfx_init_screen3::@2
@ -529,7 +529,7 @@ gfx_init_screen4: scope:[gfx_init_screen4] from gfx_init::@4
to:gfx_init_screen4::@1
gfx_init_screen4::@1: scope:[gfx_init_screen4] from gfx_init_screen4 gfx_init_screen4::@3
[292] gfx_init_screen4::cy#4 = phi( gfx_init_screen4/0, gfx_init_screen4::@3/gfx_init_screen4::cy#1 )
[292] gfx_init_screen4::ch#3 = phi( gfx_init_screen4/VIC_SCREEN4, gfx_init_screen4::@3/gfx_init_screen4::ch#1 )
[292] gfx_init_screen4::ch#3 = phi( gfx_init_screen4/VICII_SCREEN4, gfx_init_screen4::@3/gfx_init_screen4::ch#1 )
to:gfx_init_screen4::@2
gfx_init_screen4::@2: scope:[gfx_init_screen4] from gfx_init_screen4::@1 gfx_init_screen4::@2
[293] gfx_init_screen4::cx#2 = phi( gfx_init_screen4::@1/0, gfx_init_screen4::@2/gfx_init_screen4::cx#1 )
@ -553,7 +553,7 @@ gfx_init_charset: scope:[gfx_init_charset] from gfx_init::@5
to:gfx_init_charset::@1
gfx_init_charset::@1: scope:[gfx_init_charset] from gfx_init_charset gfx_init_charset::@3
[302] gfx_init_charset::c#4 = phi( gfx_init_charset/0, gfx_init_charset::@3/gfx_init_charset::c#1 )
[302] gfx_init_charset::charset#3 = phi( gfx_init_charset/VIC_CHARSET_ROM, gfx_init_charset::@3/gfx_init_charset::charset#1 )
[302] gfx_init_charset::charset#3 = phi( gfx_init_charset/VICII_CHARSET_ROM, gfx_init_charset::@3/gfx_init_charset::charset#1 )
[302] gfx_init_charset::chargen#3 = phi( gfx_init_charset/CHARGEN, gfx_init_charset::@3/gfx_init_charset::chargen#1 )
to:gfx_init_charset::@2
gfx_init_charset::@2: scope:[gfx_init_charset] from gfx_init_charset::@1 gfx_init_charset::@2
@ -577,32 +577,32 @@ gfx_init_charset::@return: scope:[gfx_init_charset] from gfx_init_charset::@4
[312] return
to:@return
void gfx_init_vic_bitmap()
gfx_init_vic_bitmap: scope:[gfx_init_vic_bitmap] from gfx_init::@6
void gfx_init_VICII_bitmap()
gfx_init_VICII_bitmap: scope:[gfx_init_VICII_bitmap] from gfx_init::@6
[313] phi()
[314] call bitmap_init
to:gfx_init_vic_bitmap::@3
gfx_init_vic_bitmap::@3: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap
to:gfx_init_VICII_bitmap::@3
gfx_init_VICII_bitmap::@3: scope:[gfx_init_VICII_bitmap] from gfx_init_VICII_bitmap
[315] phi()
[316] call bitmap_clear
to:gfx_init_vic_bitmap::@1
gfx_init_vic_bitmap::@1: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@4
[317] gfx_init_vic_bitmap::l#2 = phi( gfx_init_vic_bitmap::@3/0, gfx_init_vic_bitmap::@4/gfx_init_vic_bitmap::l#1 )
[318] if(gfx_init_vic_bitmap::l#2<gfx_init_vic_bitmap::lines_cnt) goto gfx_init_vic_bitmap::@2
to:gfx_init_vic_bitmap::@return
gfx_init_vic_bitmap::@return: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@1
to:gfx_init_VICII_bitmap::@1
gfx_init_VICII_bitmap::@1: scope:[gfx_init_VICII_bitmap] from gfx_init_VICII_bitmap::@3 gfx_init_VICII_bitmap::@4
[317] gfx_init_VICII_bitmap::l#2 = phi( gfx_init_VICII_bitmap::@3/0, gfx_init_VICII_bitmap::@4/gfx_init_VICII_bitmap::l#1 )
[318] if(gfx_init_VICII_bitmap::l#2<gfx_init_VICII_bitmap::lines_cnt) goto gfx_init_VICII_bitmap::@2
to:gfx_init_VICII_bitmap::@return
gfx_init_VICII_bitmap::@return: scope:[gfx_init_VICII_bitmap] from gfx_init_VICII_bitmap::@1
[319] return
to:@return
gfx_init_vic_bitmap::@2: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@1
[320] bitmap_line::x0#0 = gfx_init_vic_bitmap::lines_x[gfx_init_vic_bitmap::l#2]
[321] bitmap_line::x1#0 = (gfx_init_vic_bitmap::lines_x+1)[gfx_init_vic_bitmap::l#2]
[322] bitmap_line::y0#0 = gfx_init_vic_bitmap::lines_y[gfx_init_vic_bitmap::l#2]
[323] bitmap_line::y1#0 = (gfx_init_vic_bitmap::lines_y+1)[gfx_init_vic_bitmap::l#2]
gfx_init_VICII_bitmap::@2: scope:[gfx_init_VICII_bitmap] from gfx_init_VICII_bitmap::@1
[320] bitmap_line::x0#0 = gfx_init_VICII_bitmap::lines_x[gfx_init_VICII_bitmap::l#2]
[321] bitmap_line::x1#0 = (gfx_init_VICII_bitmap::lines_x+1)[gfx_init_VICII_bitmap::l#2]
[322] bitmap_line::y0#0 = gfx_init_VICII_bitmap::lines_y[gfx_init_VICII_bitmap::l#2]
[323] bitmap_line::y1#0 = (gfx_init_VICII_bitmap::lines_y+1)[gfx_init_VICII_bitmap::l#2]
[324] call bitmap_line
to:gfx_init_vic_bitmap::@4
gfx_init_vic_bitmap::@4: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@2
[325] gfx_init_vic_bitmap::l#1 = ++ gfx_init_vic_bitmap::l#2
to:gfx_init_vic_bitmap::@1
to:gfx_init_VICII_bitmap::@4
gfx_init_VICII_bitmap::@4: scope:[gfx_init_VICII_bitmap] from gfx_init_VICII_bitmap::@2
[325] gfx_init_VICII_bitmap::l#1 = ++ gfx_init_VICII_bitmap::l#2
to:gfx_init_VICII_bitmap::@1
void gfx_init_plane_8bppchunky()
gfx_init_plane_8bppchunky: scope:[gfx_init_plane_8bppchunky] from gfx_init::@7
@ -1174,47 +1174,47 @@ get_plane::@1: scope:[get_plane] from get_plane::@14
[561] phi()
to:get_plane::@return
get_plane::@return: scope:[get_plane] from get_plane get_plane::@1 get_plane::@10 get_plane::@11 get_plane::@12 get_plane::@13 get_plane::@14 get_plane::@2 get_plane::@3 get_plane::@4 get_plane::@5 get_plane::@6 get_plane::@7 get_plane::@8 get_plane::@9
[562] get_plane::return#14 = phi( get_plane/(dword)VIC_SCREEN0, get_plane::@10/PLANE_HORISONTAL2, get_plane::@11/PLANE_VERTICAL2, get_plane::@12/PLANE_CHARSET8, get_plane::@13/PLANE_BLANK, get_plane::@1/(dword)VIC_SCREEN0, get_plane::@2/(dword)VIC_SCREEN1, get_plane::@14/PLANE_FULL, get_plane::@3/(dword)VIC_SCREEN2, get_plane::@4/(dword)VIC_SCREEN3, get_plane::@5/(dword)VIC_BITMAP, get_plane::@6/(dword)VIC_CHARSET_ROM, get_plane::@7/PLANE_8BPP_CHUNKY, get_plane::@8/PLANE_HORISONTAL, get_plane::@9/PLANE_VERTICAL )
[562] get_plane::return#14 = phi( get_plane/(dword)VICII_SCREEN0, get_plane::@10/PLANE_HORISONTAL2, get_plane::@11/PLANE_VERTICAL2, get_plane::@12/PLANE_CHARSET8, get_plane::@13/PLANE_BLANK, get_plane::@1/(dword)VICII_SCREEN0, get_plane::@2/(dword)VICII_SCREEN1, get_plane::@14/PLANE_FULL, get_plane::@3/(dword)VICII_SCREEN2, get_plane::@4/(dword)VICII_SCREEN3, get_plane::@5/(dword)VICII_BITMAP, get_plane::@6/(dword)VICII_CHARSET_ROM, get_plane::@7/PLANE_8BPP_CHUNKY, get_plane::@8/PLANE_HORISONTAL, get_plane::@9/PLANE_VERTICAL )
[563] return
to:@return
byte* get_vic_screen(byte get_vic_screen::idx)
get_vic_screen: scope:[get_vic_screen] from gfx_mode::@28 gfx_mode::@30
[564] get_vic_screen::idx#2 = phi( gfx_mode::@28/get_vic_screen::idx#0, gfx_mode::@30/get_vic_screen::idx#1 )
[565] if(get_vic_screen::idx#2==0) goto get_vic_screen::@return
to:get_vic_screen::@2
get_vic_screen::@2: scope:[get_vic_screen] from get_vic_screen
[566] if(get_vic_screen::idx#2==1) goto get_vic_screen::@return
to:get_vic_screen::@3
get_vic_screen::@3: scope:[get_vic_screen] from get_vic_screen::@2
[567] if(get_vic_screen::idx#2==2) goto get_vic_screen::@return
to:get_vic_screen::@4
get_vic_screen::@4: scope:[get_vic_screen] from get_vic_screen::@3
[568] if(get_vic_screen::idx#2==3) goto get_vic_screen::@return
to:get_vic_screen::@5
get_vic_screen::@5: scope:[get_vic_screen] from get_vic_screen::@4
[569] if(get_vic_screen::idx#2!=4) goto get_vic_screen::@1
to:get_vic_screen::@return
get_vic_screen::@1: scope:[get_vic_screen] from get_vic_screen::@5
byte* get_VICII_screen(byte get_VICII_screen::idx)
get_VICII_screen: scope:[get_VICII_screen] from gfx_mode::@28 gfx_mode::@30
[564] get_VICII_screen::idx#2 = phi( gfx_mode::@28/get_VICII_screen::idx#0, gfx_mode::@30/get_VICII_screen::idx#1 )
[565] if(get_VICII_screen::idx#2==0) goto get_VICII_screen::@return
to:get_VICII_screen::@2
get_VICII_screen::@2: scope:[get_VICII_screen] from get_VICII_screen
[566] if(get_VICII_screen::idx#2==1) goto get_VICII_screen::@return
to:get_VICII_screen::@3
get_VICII_screen::@3: scope:[get_VICII_screen] from get_VICII_screen::@2
[567] if(get_VICII_screen::idx#2==2) goto get_VICII_screen::@return
to:get_VICII_screen::@4
get_VICII_screen::@4: scope:[get_VICII_screen] from get_VICII_screen::@3
[568] if(get_VICII_screen::idx#2==3) goto get_VICII_screen::@return
to:get_VICII_screen::@5
get_VICII_screen::@5: scope:[get_VICII_screen] from get_VICII_screen::@4
[569] if(get_VICII_screen::idx#2!=4) goto get_VICII_screen::@1
to:get_VICII_screen::@return
get_VICII_screen::@1: scope:[get_VICII_screen] from get_VICII_screen::@5
[570] phi()
to:get_vic_screen::@return
get_vic_screen::@return: scope:[get_vic_screen] from get_vic_screen get_vic_screen::@1 get_vic_screen::@2 get_vic_screen::@3 get_vic_screen::@4 get_vic_screen::@5
[571] get_vic_screen::return#5 = phi( get_vic_screen/VIC_SCREEN0, get_vic_screen::@5/VIC_SCREEN4, get_vic_screen::@2/VIC_SCREEN1, get_vic_screen::@3/VIC_SCREEN2, get_vic_screen::@4/VIC_SCREEN3, get_vic_screen::@1/VIC_SCREEN0 )
to:get_VICII_screen::@return
get_VICII_screen::@return: scope:[get_VICII_screen] from get_VICII_screen get_VICII_screen::@1 get_VICII_screen::@2 get_VICII_screen::@3 get_VICII_screen::@4 get_VICII_screen::@5
[571] get_VICII_screen::return#5 = phi( get_VICII_screen/VICII_SCREEN0, get_VICII_screen::@5/VICII_SCREEN4, get_VICII_screen::@2/VICII_SCREEN1, get_VICII_screen::@3/VICII_SCREEN2, get_VICII_screen::@4/VICII_SCREEN3, get_VICII_screen::@1/VICII_SCREEN0 )
[572] return
to:@return
byte* get_vic_charset(byte get_vic_charset::idx)
get_vic_charset: scope:[get_vic_charset] from gfx_mode::@29
[573] if(get_vic_charset::idx#0==0) goto get_vic_charset::@return
to:get_vic_charset::@2
get_vic_charset::@2: scope:[get_vic_charset] from get_vic_charset
[574] if(get_vic_charset::idx#0!=1) goto get_vic_charset::@1
to:get_vic_charset::@return
get_vic_charset::@1: scope:[get_vic_charset] from get_vic_charset::@2
byte* get_VICII_charset(byte get_VICII_charset::idx)
get_VICII_charset: scope:[get_VICII_charset] from gfx_mode::@29
[573] if(get_VICII_charset::idx#0==0) goto get_VICII_charset::@return
to:get_VICII_charset::@2
get_VICII_charset::@2: scope:[get_VICII_charset] from get_VICII_charset
[574] if(get_VICII_charset::idx#0!=1) goto get_VICII_charset::@1
to:get_VICII_charset::@return
get_VICII_charset::@1: scope:[get_VICII_charset] from get_VICII_charset::@2
[575] phi()
to:get_vic_charset::@return
get_vic_charset::@return: scope:[get_vic_charset] from get_vic_charset get_vic_charset::@1 get_vic_charset::@2
[576] get_vic_charset::return#2 = phi( get_vic_charset/VIC_CHARSET_ROM, get_vic_charset::@1/VIC_CHARSET_ROM, get_vic_charset::@2/VIC_BITMAP )
to:get_VICII_charset::@return
get_VICII_charset::@return: scope:[get_VICII_charset] from get_VICII_charset get_VICII_charset::@1 get_VICII_charset::@2
[576] get_VICII_charset::return#2 = phi( get_VICII_charset/VICII_CHARSET_ROM, get_VICII_charset::@1/VICII_CHARSET_ROM, get_VICII_charset::@2/VICII_BITMAP )
[577] return
to:@return
@ -1344,7 +1344,7 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get
to:@return
void bitmap_init(byte* bitmap_init::bitmap)
bitmap_init: scope:[bitmap_init] from gfx_init_vic_bitmap
bitmap_init: scope:[bitmap_init] from gfx_init_VICII_bitmap
[637] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
@ -1352,7 +1352,7 @@ bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[638] bitmap_init::x#2 = phi( bitmap_init/0, bitmap_init::@2/bitmap_init::x#1 )
[639] bitmap_init::$0 = bitmap_init::x#2 & $f8
[640] bitmap_plot_xlo[bitmap_init::x#2] = bitmap_init::$0
[641] bitmap_plot_xhi[bitmap_init::x#2] = >VIC_BITMAP
[641] bitmap_plot_xhi[bitmap_init::x#2] = >VICII_BITMAP
[642] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
[643] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
[644] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
@ -1389,7 +1389,7 @@ bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
to:@return
void bitmap_clear()
bitmap_clear: scope:[bitmap_clear] from gfx_init_vic_bitmap::@3
bitmap_clear: scope:[bitmap_clear] from gfx_init_VICII_bitmap::@3
[662] bitmap_clear::bitmap#0 = *bitmap_plot_xhi w= *bitmap_plot_xlo
[663] bitmap_clear::bitmap#5 = (byte*)bitmap_clear::bitmap#0
to:bitmap_clear::@1
@ -1414,7 +1414,7 @@ bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
to:@return
void bitmap_line(byte bitmap_line::x0 , byte bitmap_line::x1 , byte bitmap_line::y0 , byte bitmap_line::y1)
bitmap_line: scope:[bitmap_line] from gfx_init_vic_bitmap::@2
bitmap_line: scope:[bitmap_line] from gfx_init_VICII_bitmap::@2
[673] if(bitmap_line::x0#0<bitmap_line::x1#0) goto bitmap_line::@1
to:bitmap_line::@2
bitmap_line::@2: scope:[bitmap_line] from bitmap_line

File diff suppressed because one or more lines are too long

View File

@ -76,22 +76,22 @@ const byte RADIX::DECIMAL = $a
const byte RADIX::HEXADECIMAL = $10
const byte RADIX::OCTAL = 8
const nomodify struct MOS6569_VICII* VICII = (struct MOS6569_VICII*) 53248
const nomodify byte* VIC_BITMAP = (byte*) 24576
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CHARSET_ROM = (byte*) 22528
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VIC_CONTROL2 = (byte*) 53270
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte* VIC_SCREEN0 = (byte*) 16384
const nomodify byte* VIC_SCREEN1 = (byte*) 17408
const nomodify byte* VIC_SCREEN2 = (byte*) 18432
const nomodify byte* VIC_SCREEN3 = (byte*) 19456
const nomodify byte* VIC_SCREEN4 = (byte*) 20480
const nomodify byte* VICII_BITMAP = (byte*) 24576
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CHARSET_ROM = (byte*) 22528
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL2 = (byte*) 53270
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
const nomodify byte* VICII_SCREEN0 = (byte*) 16384
const nomodify byte* VICII_SCREEN1 = (byte*) 17408
const nomodify byte* VICII_SCREEN2 = (byte*) 18432
const nomodify byte* VICII_SCREEN3 = (byte*) 19456
const nomodify byte* VICII_SCREEN4 = (byte*) 20480
void apply_preset(byte apply_preset::idx)
byte apply_preset::i
byte apply_preset::i#1 reg byte y 2.00000002E8
@ -314,6 +314,17 @@ byte dtvSetCpuBankSegment1::cpuBankIdx
byte dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 20002.0
byte dtvSetCpuBankSegment1::cpuBankIdx#11 reg byte a 2002.0
byte dtvSetCpuBankSegment1::cpuBankIdx#13 reg byte a 111003.0
const nomodify byte* form_VICII_bg0_hi = form_fields_val+$1c
const nomodify byte* form_VICII_bg0_lo = form_fields_val+$1d
const nomodify byte* form_VICII_bg1_hi = form_fields_val+$1e
const nomodify byte* form_VICII_bg1_lo = form_fields_val+$1f
const nomodify byte* form_VICII_bg2_hi = form_fields_val+$20
const nomodify byte* form_VICII_bg2_lo = form_fields_val+$21
const nomodify byte* form_VICII_bg3_hi = form_fields_val+$22
const nomodify byte* form_VICII_bg3_lo = form_fields_val+$23
const nomodify byte* form_VICII_cols = form_fields_val+$1a
const nomodify byte* form_VICII_gfx = form_fields_val+$19
const nomodify byte* form_VICII_screen = form_fields_val+$18
const nomodify byte* form_a_mod_hi = form_fields_val+$f
const nomodify byte* form_a_mod_lo = form_fields_val+$10
const nomodify byte* form_a_pattern = form_fields_val+$a
@ -410,17 +421,21 @@ byte* form_set_screen::screen
byte form_set_screen::y
byte form_set_screen::y#1 reg byte x 150001.5
byte form_set_screen::y#2 reg byte x 66667.33333333333
const nomodify byte* form_vic_bg0_hi = form_fields_val+$1c
const nomodify byte* form_vic_bg0_lo = form_fields_val+$1d
const nomodify byte* form_vic_bg1_hi = form_fields_val+$1e
const nomodify byte* form_vic_bg1_lo = form_fields_val+$1f
const nomodify byte* form_vic_bg2_hi = form_fields_val+$20
const nomodify byte* form_vic_bg2_lo = form_fields_val+$21
const nomodify byte* form_vic_bg3_hi = form_fields_val+$22
const nomodify byte* form_vic_bg3_lo = form_fields_val+$23
const nomodify byte* form_vic_cols = form_fields_val+$1a
const nomodify byte* form_vic_gfx = form_fields_val+$19
const nomodify byte* form_vic_screen = form_fields_val+$18
byte* get_VICII_charset(byte get_VICII_charset::idx)
byte get_VICII_charset::idx
byte get_VICII_charset::idx#0 reg byte a 1051.5
byte* get_VICII_charset::return
byte* get_VICII_charset::return#2 return zp[2]:7 33.666666666666664
byte* get_VICII_charset::return#4 return zp[2]:7 202.0
byte* get_VICII_screen(byte get_VICII_screen::idx)
byte get_VICII_screen::idx
byte get_VICII_screen::idx#0 reg byte a 202.0
byte get_VICII_screen::idx#1 reg byte a 202.0
byte get_VICII_screen::idx#2 reg byte a 1041.4
byte* get_VICII_screen::return
byte* get_VICII_screen::return#10 return zp[2]:3 202.0
byte* get_VICII_screen::return#11 return zp[2]:3 202.0
byte* get_VICII_screen::return#5 return zp[2]:3 50.5
dword get_plane(byte get_plane::idx)
byte get_plane::idx
byte get_plane::idx#0 reg byte a 202.0
@ -430,22 +445,14 @@ dword get_plane::return
dword get_plane::return#14 return zp[4]:9 50.5
dword get_plane::return#16 return zp[4]:9 202.0
dword get_plane::return#17 return zp[4]:9 202.0
byte* get_vic_charset(byte get_vic_charset::idx)
byte get_vic_charset::idx
byte get_vic_charset::idx#0 reg byte a 1051.5
byte* get_vic_charset::return
byte* get_vic_charset::return#2 return zp[2]:7 33.666666666666664
byte* get_vic_charset::return#4 return zp[2]:7 202.0
byte* get_vic_screen(byte get_vic_screen::idx)
byte get_vic_screen::idx
byte get_vic_screen::idx#0 reg byte a 202.0
byte get_vic_screen::idx#1 reg byte a 202.0
byte get_vic_screen::idx#2 reg byte a 1041.4
byte* get_vic_screen::return
byte* get_vic_screen::return#10 return zp[2]:3 202.0
byte* get_vic_screen::return#11 return zp[2]:3 202.0
byte* get_vic_screen::return#5 return zp[2]:3 50.5
void gfx_init()
void gfx_init_VICII_bitmap()
byte gfx_init_VICII_bitmap::l
byte gfx_init_VICII_bitmap::l#1 l zp[1]:2 2002.0
byte gfx_init_VICII_bitmap::l#2 l zp[1]:2 1001.0
const byte gfx_init_VICII_bitmap::lines_cnt = 9
const byte* gfx_init_VICII_bitmap::lines_x[] = { 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80 }
const byte* gfx_init_VICII_bitmap::lines_y[] = { 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 }
void gfx_init_charset()
byte gfx_init_charset::c
byte gfx_init_charset::c#1 c zp[1]:17 1501.5
@ -659,13 +666,6 @@ byte gfx_init_screen4::cx#2 reg byte x 6667.333333333333
byte gfx_init_screen4::cy
byte gfx_init_screen4::cy#1 cy zp[1]:17 1501.5
byte gfx_init_screen4::cy#4 cy zp[1]:17 333.6666666666667
void gfx_init_vic_bitmap()
byte gfx_init_vic_bitmap::l
byte gfx_init_vic_bitmap::l#1 l zp[1]:2 2002.0
byte gfx_init_vic_bitmap::l#2 l zp[1]:2 1001.0
const byte gfx_init_vic_bitmap::lines_cnt = 9
const byte* gfx_init_vic_bitmap::lines_x[] = { 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80 }
const byte* gfx_init_vic_bitmap::lines_y[] = { 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 }
void gfx_mode()
byte~ gfx_mode::$18 reg byte a 202.0
dword~ gfx_mode::$20 zp[4]:9 202.0
@ -708,6 +708,17 @@ byte~ gfx_mode::$62 reg byte a 202.0
byte*~ gfx_mode::$82 zp[2]:3 101.0
byte*~ gfx_mode::$83 zp[2]:7 101.0
byte~ gfx_mode::$84 reg byte a 202.0
byte* gfx_mode::VICII_colors
byte* gfx_mode::VICII_colors#0 VICII_colors zp[2]:3 202.0
byte* gfx_mode::VICII_colors#1 VICII_colors zp[2]:3 42000.600000000006
byte* gfx_mode::VICII_colors#2 VICII_colors zp[2]:3 103334.66666666666
byte* gfx_mode::VICII_colors#3 VICII_colors zp[2]:3 20103.0
byte gfx_mode::VICII_control
byte gfx_mode::VICII_control#2 reg byte x 202.0
byte gfx_mode::VICII_control#4 reg byte x 303.0
byte gfx_mode::VICII_control#5 reg byte x 101.0
byte gfx_mode::VICII_control2
byte gfx_mode::VICII_control2#2 reg byte a 101.0
byte* gfx_mode::col
byte* gfx_mode::col#1 col zp[2]:5 35000.5
byte* gfx_mode::col#2 col zp[2]:5 155002.0
@ -746,17 +757,6 @@ dword gfx_mode::plane_b
dword gfx_mode::plane_b#0 plane_b zp[4]:9 57.714285714285715
byte gfx_mode::plane_b_offs
byte gfx_mode::plane_b_offs#0 reg byte x 40.4
byte* gfx_mode::vic_colors
byte* gfx_mode::vic_colors#0 vic_colors zp[2]:3 202.0
byte* gfx_mode::vic_colors#1 vic_colors zp[2]:3 42000.600000000006
byte* gfx_mode::vic_colors#2 vic_colors zp[2]:3 103334.66666666666
byte* gfx_mode::vic_colors#3 vic_colors zp[2]:3 20103.0
byte gfx_mode::vic_control
byte gfx_mode::vic_control#2 reg byte x 202.0
byte gfx_mode::vic_control#4 reg byte x 303.0
byte gfx_mode::vic_control#5 reg byte x 101.0
byte gfx_mode::vic_control2
byte gfx_mode::vic_control2#2 reg byte a 101.0
byte keyboard_event_get()
byte keyboard_event_get::return
byte keyboard_event_get::return#1 reg byte a 2.0000002E7
@ -917,8 +917,8 @@ const byte* render_preset_name::name#9 name_9 = "Sixs Fred "
reg byte x [ form_mode::i#2 form_mode::i#1 ]
reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ]
reg byte x [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ]
reg byte a [ gfx_mode::vic_control2#2 ]
reg byte x [ gfx_mode::VICII_control#4 gfx_mode::VICII_control#2 gfx_mode::VICII_control#5 ]
reg byte a [ gfx_mode::VICII_control2#2 ]
reg byte x [ gfx_mode::cx#2 gfx_mode::cx#1 ]
reg byte x [ gfx_mode::j#2 gfx_mode::j#1 ]
reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ]
@ -928,11 +928,11 @@ reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ]
reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ]
reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ]
reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ]
zp[1]:2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 form_field_idx#30 form_field_idx#1 form_field_idx#19 form_field_idx#33 form_field_idx#5 form_field_idx#4 ]
zp[1]:2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_VICII_bitmap::l#2 gfx_init_VICII_bitmap::l#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 form_field_idx#30 form_field_idx#1 form_field_idx#19 form_field_idx#33 form_field_idx#5 form_field_idx#4 ]
reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ]
reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ]
zp[2]:3 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$82 gfx_mode::$47 gfx_mode::$48 ]
zp[2]:3 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::VICII_colors#2 gfx_mode::VICII_colors#3 gfx_mode::VICII_colors#1 gfx_mode::VICII_colors#0 get_VICII_screen::return#11 get_VICII_screen::return#5 get_VICII_screen::return#10 gfx_mode::$82 gfx_mode::$47 gfx_mode::$48 ]
reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ]
reg byte x [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ]
zp[2]:5 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ]
@ -943,14 +943,14 @@ reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_
reg byte x [ form_control::return#2 ]
reg byte y [ apply_preset::i#2 apply_preset::i#1 ]
reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ]
reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ]
reg byte a [ get_VICII_screen::idx#2 get_VICII_screen::idx#0 get_VICII_screen::idx#1 ]
reg byte x [ keyboard_modifiers#22 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#19 keyboard_modifiers#2 keyboard_modifiers#3 keyboard_modifiers#4 ]
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$83 gfx_mode::$50 form_set_screen::line#2 form_set_screen::line#1 print_set_screen::screen#2 print_line_cursor#22 print_line_cursor#1 print_screen#0 print_line_cursor#2 ]
zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 get_VICII_charset::return#2 get_VICII_charset::return#4 gfx_mode::$83 gfx_mode::$50 form_set_screen::line#2 form_set_screen::line#1 print_set_screen::screen#2 print_line_cursor#22 print_line_cursor#1 print_screen#0 print_line_cursor#2 ]
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ]
zp[4]:9 [ gfx_init_plane_fill::plane_addr#3 get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$20 gfx_mode::plane_a#0 gfx_mode::$34 gfx_mode::plane_b#0 ]
@ -983,7 +983,7 @@ reg byte a [ gfx_mode::$42 ]
reg byte a [ gfx_mode::$43 ]
reg byte a [ gfx_mode::$44 ]
reg byte a [ gfx_mode::$45 ]
reg byte a [ get_vic_charset::idx#0 ]
reg byte a [ get_VICII_charset::idx#0 ]
reg byte a [ gfx_mode::$51 ]
zp[1]:15 [ gfx_mode::$52 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line::xd#2 bitmap_line::xd#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
reg byte a [ gfx_mode::$84 ]

View File

@ -12,12 +12,12 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
.const VIC_ECM = $40
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VIC_MCM = $10
.const VIC_CSEL = 8
.const VICII_ECM = $40
.const VICII_BMM = $20
.const VICII_DEN = $10
.const VICII_RSEL = 8
.const VICII_MCM = $10
.const VICII_CSEL = 8
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
@ -63,9 +63,9 @@
.label BG_COLOR1 = $d022
.label BG_COLOR2 = $d023
.label BG_COLOR3 = $d024
.label VIC_CONTROL = $d011
.label VIC_CONTROL2 = $d016
.label VIC_MEMORY = $d018
.label VICII_CONTROL = $d011
.label VICII_CONTROL2 = $d016
.label VICII_MEMORY = $d018
// Processor port data direction register
.label PROCPORT_DDR = 0
// Processor Port Register controlling RAM/ROM configuration and the datasette
@ -153,18 +153,18 @@ menu: {
// Set VIC Bank bits to output - all others to input
lda #3^CHARSET/$4000
sta CIA2
// *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL
lda #VIC_CSEL
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
lda #VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
// VIC Memory Pointers
lda #(CHARSET&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - default
__b1:
@ -469,18 +469,18 @@ mode_stdchar: {
// Set VIC Bank bits to output - all others to input
lda #3^CHARSET/$4000
sta CIA2
// *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL
lda #VIC_CSEL
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
lda #VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
// VIC Memory Pointers
lda #(CHARSET&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - default
__b1:
@ -604,18 +604,18 @@ mode_ecmchar: {
// Set VIC Bank bits to output - all others to input
lda #3^CHARSET/$4000
sta CIA2
// *VIC_CONTROL = VIC_DEN|VIC_RSEL|VIC_ECM|3
// *VICII_CONTROL = VICII_DEN|VICII_RSEL|VICII_ECM|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|VIC_ECM|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL
lda #VIC_CSEL
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
lda #VICII_DEN|VICII_RSEL|VICII_ECM|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
// VIC Memory Pointers
lda #(CHARSET&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - default
__b1:
@ -749,18 +749,18 @@ mode_mcchar: {
// Set VIC Bank bits to output - all others to input
lda #3^CHARSET/$4000
sta CIA2
// *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL|VIC_MCM
lda #VIC_CSEL|VIC_MCM
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
lda #VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL|VICII_MCM
lda #VICII_CSEL|VICII_MCM
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
// VIC Memory Pointers
lda #(CHARSET&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - default
__b1:
@ -879,18 +879,18 @@ mode_stdbitmap: {
// Set VIC Bank bits to output - all others to input
lda #3^BITMAP/$4000
sta CIA2
// *VIC_CONTROL = VIC_BMM|VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_BMM|VICII_DEN|VICII_RSEL|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL
lda #VIC_CSEL
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
lda #VICII_BMM|VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
// VIC Memory Pointers
lda #(BITMAP&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - default
__b1:
@ -1030,18 +1030,18 @@ mode_hicolstdchar: {
// Set VIC Bank bits to output - all others to input
lda #3^CHARSET/$4000
sta CIA2
// *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL
lda #VIC_CSEL
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
lda #VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
// VIC Memory Pointers
lda #(CHARSET&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - Grey Tones
__b1:
@ -1160,18 +1160,18 @@ mode_hicolecmchar: {
// Set VIC Bank bits to output - all others to input
lda #3^CHARSET/$4000
sta CIA2
// *VIC_CONTROL = VIC_DEN|VIC_RSEL|VIC_ECM|3
// *VICII_CONTROL = VICII_DEN|VICII_RSEL|VICII_ECM|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|VIC_ECM|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL
lda #VIC_CSEL
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
lda #VICII_DEN|VICII_RSEL|VICII_ECM|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
// VIC Memory Pointers
lda #(CHARSET&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - Grey Tones
__b1:
@ -1301,18 +1301,18 @@ mode_hicolmcchar: {
// Set VIC Bank bits to output - all others to input
lda #3^CHARSET/$4000
sta CIA2
// *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
// Set VIC Bank
// VIC Graphics Mode
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL|VIC_MCM
lda #VIC_CSEL|VIC_MCM
sta VIC_CONTROL2
// *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
lda #VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL|VICII_MCM
lda #VICII_CSEL|VICII_MCM
sta VICII_CONTROL2
// *VICII_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400))
// VIC Memory Pointers
lda #(CHARSET&$3fff)/$400
sta VIC_MEMORY
sta VICII_MEMORY
ldx #0
// DTV Palette - Grey Tones
__b1:
@ -1418,13 +1418,13 @@ mode_sixsfred2: {
// *DTV_CONTROL = DTV_LINEAR
lda #DTV_LINEAR
sta DTV_CONTROL
// *VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
// VIC Graphics Mode
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
lda #VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEA_START_LO = <PLANEA
// Linear Graphics Plane A Counter
lda #0
@ -1618,13 +1618,13 @@ mode_twoplanebitmap: {
// *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR
lda #DTV_HIGHCOLOR|DTV_LINEAR
sta DTV_CONTROL
// *VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
// VIC Graphics Mode
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_CSEL
lda #VIC_CSEL
sta VIC_CONTROL2
lda #VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_CSEL
lda #VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEA_START_LO = <PLANEA
// Linear Graphics Plane A Counter
lda #0
@ -1829,13 +1829,13 @@ mode_sixsfred: {
// *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR
lda #DTV_HIGHCOLOR|DTV_LINEAR
sta DTV_CONTROL
// *VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
// VIC Graphics Mode
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
lda #VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEA_START_LO = <PLANEA
// Linear Graphics Plane A Counter
lda #0
@ -2022,13 +2022,13 @@ mode_8bpppixelcell: {
// *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
sta DTV_CONTROL
// *VIC_CONTROL = VIC_ECM|VIC_DEN|VIC_RSEL|3
// *VICII_CONTROL = VICII_ECM|VICII_DEN|VICII_RSEL|3
// VIC Graphics Mode
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
lda #VICII_ECM|VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEA_START_LO = <PLANEA
// Linear Graphics Plane A Counter
lda #0
@ -2207,13 +2207,13 @@ mode_8bppchunkybmm: {
// *DTV_CONTROL = DTV_HIGHCOLOR | DTV_LINEAR | DTV_CHUNKY | DTV_COLORRAM_OFF
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
sta DTV_CONTROL
// *VIC_CONTROL = VIC_ECM | VIC_DEN | VIC_RSEL | 3
// *VICII_CONTROL = VICII_ECM | VICII_DEN | VICII_RSEL | 3
// VIC Graphics Mode
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
// *VIC_CONTROL2 = VIC_MCM | VIC_CSEL
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
lda #VICII_ECM|VICII_DEN|VICII_RSEL|3
sta VICII_CONTROL
// *VICII_CONTROL2 = VICII_MCM | VICII_CSEL
lda #VICII_MCM|VICII_CSEL
sta VICII_CONTROL2
// *DTV_PLANEB_START_LO = < < PLANEB
// Linear Graphics Plane B Counter
lda #0

View File

@ -19,9 +19,9 @@ menu: scope:[menu] from main::@1
[9] *DTV_CONTROL = 0
[10] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[11] *((byte*)CIA2) = 3^(byte)(word)menu::CHARSET/$4000
[12] *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
[13] *VIC_CONTROL2 = VIC_CSEL
[14] *VIC_MEMORY = (byte)(word)menu::CHARSET&$3fff/$400
[12] *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
[13] *VICII_CONTROL2 = VICII_CSEL
[14] *VICII_MEMORY = (byte)(word)menu::CHARSET&$3fff/$400
to:menu::@1
menu::@1: scope:[menu] from menu menu::@1
[15] menu::i#2 = phi( menu/0, menu::@1/menu::i#1 )
@ -279,9 +279,9 @@ mode_stdchar: scope:[mode_stdchar] from menu::@17
[144] *DTV_CONTROL = 0
[145] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[146] *((byte*)CIA2) = 3^(byte)(word)mode_stdchar::CHARSET/$4000
[147] *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
[148] *VIC_CONTROL2 = VIC_CSEL
[149] *VIC_MEMORY = (byte)(word)mode_stdchar::CHARSET&$3fff/$400
[147] *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
[148] *VICII_CONTROL2 = VICII_CSEL
[149] *VICII_MEMORY = (byte)(word)mode_stdchar::CHARSET&$3fff/$400
to:mode_stdchar::@1
mode_stdchar::@1: scope:[mode_stdchar] from mode_stdchar mode_stdchar::@1
[150] mode_stdchar::i#2 = phi( mode_stdchar/0, mode_stdchar::@1/mode_stdchar::i#1 )
@ -335,9 +335,9 @@ mode_ecmchar: scope:[mode_ecmchar] from menu::@18
[178] *DTV_CONTROL = 0
[179] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[180] *((byte*)CIA2) = 3^(byte)(word)mode_ecmchar::CHARSET/$4000
[181] *VIC_CONTROL = VIC_DEN|VIC_RSEL|VIC_ECM|3
[182] *VIC_CONTROL2 = VIC_CSEL
[183] *VIC_MEMORY = (byte)(word)mode_ecmchar::CHARSET&$3fff/$400
[181] *VICII_CONTROL = VICII_DEN|VICII_RSEL|VICII_ECM|3
[182] *VICII_CONTROL2 = VICII_CSEL
[183] *VICII_MEMORY = (byte)(word)mode_ecmchar::CHARSET&$3fff/$400
to:mode_ecmchar::@1
mode_ecmchar::@1: scope:[mode_ecmchar] from mode_ecmchar mode_ecmchar::@1
[184] mode_ecmchar::i#2 = phi( mode_ecmchar/0, mode_ecmchar::@1/mode_ecmchar::i#1 )
@ -394,9 +394,9 @@ mode_mcchar: scope:[mode_mcchar] from menu::@19
[215] *DTV_CONTROL = 0
[216] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[217] *((byte*)CIA2) = 3^(byte)(word)mode_mcchar::CHARSET/$4000
[218] *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
[219] *VIC_CONTROL2 = VIC_CSEL|VIC_MCM
[220] *VIC_MEMORY = (byte)(word)mode_mcchar::CHARSET&$3fff/$400
[218] *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
[219] *VICII_CONTROL2 = VICII_CSEL|VICII_MCM
[220] *VICII_MEMORY = (byte)(word)mode_mcchar::CHARSET&$3fff/$400
to:mode_mcchar::@1
mode_mcchar::@1: scope:[mode_mcchar] from mode_mcchar mode_mcchar::@1
[221] mode_mcchar::i#2 = phi( mode_mcchar/0, mode_mcchar::@1/mode_mcchar::i#1 )
@ -450,9 +450,9 @@ mode_stdbitmap: scope:[mode_stdbitmap] from menu::@20
[249] *DTV_CONTROL = 0
[250] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[251] *((byte*)CIA2) = 3^(byte)(word)mode_stdbitmap::BITMAP/$4000
[252] *VIC_CONTROL = VIC_BMM|VIC_DEN|VIC_RSEL|3
[253] *VIC_CONTROL2 = VIC_CSEL
[254] *VIC_MEMORY = (byte)(word)mode_stdbitmap::BITMAP&$3fff/$400
[252] *VICII_CONTROL = VICII_BMM|VICII_DEN|VICII_RSEL|3
[253] *VICII_CONTROL2 = VICII_CSEL
[254] *VICII_MEMORY = (byte)(word)mode_stdbitmap::BITMAP&$3fff/$400
to:mode_stdbitmap::@1
mode_stdbitmap::@1: scope:[mode_stdbitmap] from mode_stdbitmap mode_stdbitmap::@1
[255] mode_stdbitmap::i#2 = phi( mode_stdbitmap/0, mode_stdbitmap::@1/mode_stdbitmap::i#1 )
@ -523,9 +523,9 @@ mode_hicolstdchar: scope:[mode_hicolstdchar] from menu::@21
[292] *DTV_CONTROL = DTV_HIGHCOLOR
[293] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[294] *((byte*)CIA2) = 3^(byte)(word)mode_hicolstdchar::CHARSET/$4000
[295] *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
[296] *VIC_CONTROL2 = VIC_CSEL
[297] *VIC_MEMORY = (byte)(word)mode_hicolstdchar::CHARSET&$3fff/$400
[295] *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
[296] *VICII_CONTROL2 = VICII_CSEL
[297] *VICII_MEMORY = (byte)(word)mode_hicolstdchar::CHARSET&$3fff/$400
to:mode_hicolstdchar::@1
mode_hicolstdchar::@1: scope:[mode_hicolstdchar] from mode_hicolstdchar mode_hicolstdchar::@1
[298] mode_hicolstdchar::i#2 = phi( mode_hicolstdchar/0, mode_hicolstdchar::@1/mode_hicolstdchar::i#1 )
@ -577,9 +577,9 @@ mode_hicolecmchar: scope:[mode_hicolecmchar] from menu::@22
[324] *DTV_CONTROL = DTV_HIGHCOLOR
[325] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[326] *((byte*)CIA2) = 3^(byte)(word)mode_hicolecmchar::CHARSET/$4000
[327] *VIC_CONTROL = VIC_DEN|VIC_RSEL|VIC_ECM|3
[328] *VIC_CONTROL2 = VIC_CSEL
[329] *VIC_MEMORY = (byte)(word)mode_hicolecmchar::CHARSET&$3fff/$400
[327] *VICII_CONTROL = VICII_DEN|VICII_RSEL|VICII_ECM|3
[328] *VICII_CONTROL2 = VICII_CSEL
[329] *VICII_MEMORY = (byte)(word)mode_hicolecmchar::CHARSET&$3fff/$400
to:mode_hicolecmchar::@1
mode_hicolecmchar::@1: scope:[mode_hicolecmchar] from mode_hicolecmchar mode_hicolecmchar::@1
[330] mode_hicolecmchar::i#2 = phi( mode_hicolecmchar/0, mode_hicolecmchar::@1/mode_hicolecmchar::i#1 )
@ -634,9 +634,9 @@ mode_hicolmcchar: scope:[mode_hicolmcchar] from menu::@23
[359] *DTV_CONTROL = DTV_HIGHCOLOR
[360] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
[361] *((byte*)CIA2) = 3^(byte)(word)mode_hicolmcchar::CHARSET/$4000
[362] *VIC_CONTROL = VIC_DEN|VIC_RSEL|3
[363] *VIC_CONTROL2 = VIC_CSEL|VIC_MCM
[364] *VIC_MEMORY = (byte)(word)mode_hicolmcchar::CHARSET&$3fff/$400
[362] *VICII_CONTROL = VICII_DEN|VICII_RSEL|3
[363] *VICII_CONTROL2 = VICII_CSEL|VICII_MCM
[364] *VICII_MEMORY = (byte)(word)mode_hicolmcchar::CHARSET&$3fff/$400
to:mode_hicolmcchar::@1
mode_hicolmcchar::@1: scope:[mode_hicolmcchar] from mode_hicolmcchar mode_hicolmcchar::@1
[365] mode_hicolmcchar::i#2 = phi( mode_hicolmcchar/0, mode_hicolmcchar::@1/mode_hicolmcchar::i#1 )
@ -685,8 +685,8 @@ mode_hicolmcchar::@return: scope:[mode_hicolmcchar] from mode_hicolmcchar::@6
void mode_sixsfred2()
mode_sixsfred2: scope:[mode_sixsfred2] from menu::@24
[390] *DTV_CONTROL = DTV_LINEAR
[391] *VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
[392] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[391] *VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
[392] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[393] *DTV_PLANEA_START_LO = 0
[394] *DTV_PLANEA_START_MI = >mode_sixsfred2::PLANEA
[395] *DTV_PLANEA_START_HI = 0
@ -776,8 +776,8 @@ mode_sixsfred2::@return: scope:[mode_sixsfred2] from mode_sixsfred2::@12
void mode_twoplanebitmap()
mode_twoplanebitmap: scope:[mode_twoplanebitmap] from menu::@25
[445] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR
[446] *VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
[447] *VIC_CONTROL2 = VIC_CSEL
[446] *VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
[447] *VICII_CONTROL2 = VICII_CSEL
[448] *DTV_PLANEA_START_LO = 0
[449] *DTV_PLANEA_START_MI = >mode_twoplanebitmap::PLANEA
[450] *DTV_PLANEA_START_HI = 0
@ -878,8 +878,8 @@ mode_twoplanebitmap::@8: scope:[mode_twoplanebitmap] from mode_twoplanebitmap::
void mode_sixsfred()
mode_sixsfred: scope:[mode_sixsfred] from menu::@26
[505] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR
[506] *VIC_CONTROL = VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
[507] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[506] *VICII_CONTROL = VICII_ECM|VICII_BMM|VICII_DEN|VICII_RSEL|3
[507] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[508] *DTV_PLANEA_START_LO = 0
[509] *DTV_PLANEA_START_MI = >mode_sixsfred::PLANEA
[510] *DTV_PLANEA_START_HI = 0
@ -967,8 +967,8 @@ mode_sixsfred::@return: scope:[mode_sixsfred] from mode_sixsfred::@12
void mode_8bpppixelcell()
mode_8bpppixelcell: scope:[mode_8bpppixelcell] from menu::@27
[558] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
[559] *VIC_CONTROL = VIC_ECM|VIC_DEN|VIC_RSEL|3
[560] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[559] *VICII_CONTROL = VICII_ECM|VICII_DEN|VICII_RSEL|3
[560] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[561] *DTV_PLANEA_START_LO = 0
[562] *DTV_PLANEA_START_MI = >mode_8bpppixelcell::PLANEA
[563] *DTV_PLANEA_START_HI = 0
@ -1065,8 +1065,8 @@ mode_8bpppixelcell::@return: scope:[mode_8bpppixelcell] from mode_8bpppixelcell
void mode_8bppchunkybmm()
mode_8bppchunkybmm: scope:[mode_8bppchunkybmm] from menu::@28
[613] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
[614] *VIC_CONTROL = VIC_ECM|VIC_DEN|VIC_RSEL|3
[615] *VIC_CONTROL2 = VIC_MCM|VIC_CSEL
[614] *VICII_CONTROL = VICII_ECM|VICII_DEN|VICII_RSEL|3
[615] *VICII_CONTROL2 = VICII_MCM|VICII_CSEL
[616] *DTV_PLANEB_START_LO = 0
[617] *DTV_PLANEB_START_MI = 0
[618] *DTV_PLANEB_START_HI = <>mode_8bppchunkybmm::PLANEB

File diff suppressed because it is too large Load Diff

View File

@ -68,15 +68,15 @@ const byte RADIX::DECIMAL = $a
const byte RADIX::HEXADECIMAL = $10
const byte RADIX::OCTAL = 8
const nomodify byte* RASTER = (byte*) 53266
const nomodify byte VIC_BMM = $20
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VIC_CONTROL2 = (byte*) 53270
const nomodify byte VIC_CSEL = 8
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_ECM = $40
const nomodify byte VIC_MCM = $10
const nomodify byte* VIC_MEMORY = (byte*) 53272
const nomodify byte VIC_RSEL = 8
const nomodify byte VICII_BMM = $20
const nomodify byte* VICII_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL2 = (byte*) 53270
const nomodify byte VICII_CSEL = 8
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_ECM = $40
const nomodify byte VICII_MCM = $10
const nomodify byte* VICII_MEMORY = (byte*) 53272
const nomodify byte VICII_RSEL = 8
void bitmap_clear()
byte* bitmap_clear::bitmap
word bitmap_clear::bitmap#0 bitmap zp[2]:17 10001.0

View File

@ -63,7 +63,7 @@
.label SPRITES_MC = $d01c
.label SPRITES_EXPAND_X = $d01d
.label RASTER = $d012
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
// VIC II IRQ Enable Register
@ -788,10 +788,10 @@ setupRasterIrq: {
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// *VIC_CONTROL &=0x7f
// *VICII_CONTROL &=0x7f
lda #$7f
and VIC_CONTROL
sta VIC_CONTROL
and VICII_CONTROL
sta VICII_CONTROL
// *RASTER = <raster
lda #RASTER_IRQ_TOP
sta RASTER

View File

@ -293,7 +293,7 @@ setupRasterIrq: scope:[setupRasterIrq] from main::@10
[156] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
to:setupRasterIrq::@1
setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq
[157] *VIC_CONTROL = *VIC_CONTROL & $7f
[157] *VICII_CONTROL = *VICII_CONTROL & $7f
to:setupRasterIrq::@2
setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1
[158] *RASTER = <RASTER_IRQ_TOP

View File

@ -921,12 +921,12 @@ setupRasterIrq: scope:[setupRasterIrq] from main::@11
setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq
setupRasterIrq::irqRoutine#2 = phi( setupRasterIrq/setupRasterIrq::irqRoutine#4 )
setupRasterIrq::raster#3 = phi( setupRasterIrq/setupRasterIrq::raster#1 )
*VIC_CONTROL = *VIC_CONTROL & $7f
*VICII_CONTROL = *VICII_CONTROL & $7f
to:setupRasterIrq::@2
setupRasterIrq::@3: scope:[setupRasterIrq] from setupRasterIrq
setupRasterIrq::irqRoutine#3 = phi( setupRasterIrq/setupRasterIrq::irqRoutine#4 )
setupRasterIrq::raster#4 = phi( setupRasterIrq/setupRasterIrq::raster#1 )
*VIC_CONTROL = *VIC_CONTROL | $80
*VICII_CONTROL = *VICII_CONTROL | $80
to:setupRasterIrq::@2
setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 setupRasterIrq::@3
setupRasterIrq::irqRoutine#1 = phi( setupRasterIrq::@1/setupRasterIrq::irqRoutine#2, setupRasterIrq::@3/setupRasterIrq::irqRoutine#3 )
@ -1179,7 +1179,7 @@ const nomodify word SPRITE_PTRS = $3f8
const byte STATUS_FREE = 0
const byte STATUS_NEW = 1
const byte STATUS_PROCESSING = 2
const nomodify byte* VIC_CONTROL = (byte*)$d011
const nomodify byte* VICII_CONTROL = (byte*)$d011
const to_nomodify word* VXSIN[$28] = kickasm {{ .for(var i=0; i<40; i++) {
.word -sin(toRadians([i*360]/40))*4
}
@ -1999,8 +1999,8 @@ Adding number conversion cast (unumber) 0 in *SPRITES_MC = 0
Adding number conversion cast (unumber) 0 in *SPRITES_EXPAND_X = 0
Adding number conversion cast (unumber) 0 in *SPRITES_EXPAND_Y = 0
Adding number conversion cast (unumber) $100 in setupRasterIrq::$0 = setupRasterIrq::raster#1 < $100
Adding number conversion cast (unumber) $7f in *VIC_CONTROL = *VIC_CONTROL & $7f
Adding number conversion cast (unumber) $80 in *VIC_CONTROL = *VIC_CONTROL | $80
Adding number conversion cast (unumber) $7f in *VICII_CONTROL = *VICII_CONTROL & $7f
Adding number conversion cast (unumber) $80 in *VICII_CONTROL = *VICII_CONTROL | $80
Adding number conversion cast (unumber) $3e8 in malloc::size#0 = $3e8
Adding number conversion cast (unumber) $3e8 in malloc::size#1 = $3e8
Successful SSA optimization PassNAddNumberTypeConversions
@ -3350,7 +3350,7 @@ setupRasterIrq: scope:[setupRasterIrq] from main::@10
[156] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
to:setupRasterIrq::@1
setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq
[157] *VIC_CONTROL = *VIC_CONTROL & $7f
[157] *VICII_CONTROL = *VICII_CONTROL & $7f
to:setupRasterIrq::@2
setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1
[158] *RASTER = <RASTER_IRQ_TOP
@ -4409,7 +4409,7 @@ Statement [151] *initSprites::sp#2 = 0 [ initSprites::sp#2 ] ( main:7::initSprit
Statement [154] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [155] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [156] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [157] *VIC_CONTROL = *VIC_CONTROL & $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [157] *VICII_CONTROL = *VICII_CONTROL & $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [158] *RASTER = <RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [159] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [160] *HARDWARE_IRQ = setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
@ -4616,7 +4616,7 @@ Statement [151] *initSprites::sp#2 = 0 [ initSprites::sp#2 ] ( main:7::initSprit
Statement [154] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [155] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [156] *((byte*)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [157] *VIC_CONTROL = *VIC_CONTROL & $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [157] *VICII_CONTROL = *VICII_CONTROL & $7f [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [158] *RASTER = <RASTER_IRQ_TOP [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [159] *IRQ_ENABLE = IRQ_RASTER [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
Statement [160] *HARDWARE_IRQ = setupRasterIrq::irqRoutine#0 [ ] ( main:7::setupRasterIrq:42 [ SCREEN_COPY#0 SCREEN_DIST#0 ] { } ) always clobbers reg byte a
@ -5132,7 +5132,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.label SPRITES_MC = $d01c
.label SPRITES_EXPAND_X = $d01d
.label RASTER = $d012
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
// VIC II IRQ Enable Register
@ -6104,10 +6104,10 @@ setupRasterIrq: {
jmp __b1
// setupRasterIrq::@1
__b1:
// [157] *VIC_CONTROL = *VIC_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// [157] *VICII_CONTROL = *VICII_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
lda #$7f
and VIC_CONTROL
sta VIC_CONTROL
and VICII_CONTROL
sta VICII_CONTROL
jmp __b2
// setupRasterIrq::@2
__b2:
@ -7390,7 +7390,7 @@ const nomodify word SPRITE_PTRS = $3f8
const byte STATUS_FREE = 0
const byte STATUS_NEW = 1
const byte STATUS_PROCESSING = 2
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL = (byte*) 53265
const to_nomodify word* VXSIN[$28] = kickasm {{ .for(var i=0; i<40; i++) {
.word -sin(toRadians([i*360]/40))*4
}
@ -7840,7 +7840,7 @@ Score: 1110954
.label SPRITES_MC = $d01c
.label SPRITES_EXPAND_X = $d01d
.label RASTER = $d012
.label VIC_CONTROL = $d011
.label VICII_CONTROL = $d011
// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
// VIC II IRQ Enable Register
@ -8817,11 +8817,11 @@ setupRasterIrq: {
lda #CIA_INTERRUPT_CLEAR
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
// setupRasterIrq::@1
// *VIC_CONTROL &=0x7f
// [157] *VIC_CONTROL = *VIC_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
// *VICII_CONTROL &=0x7f
// [157] *VICII_CONTROL = *VICII_CONTROL & $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
lda #$7f
and VIC_CONTROL
sta VIC_CONTROL
and VICII_CONTROL
sta VICII_CONTROL
// setupRasterIrq::@2
// *RASTER = <raster
// [158] *RASTER = <RASTER_IRQ_TOP -- _deref_pbuc1=vbuc2

View File

@ -60,7 +60,7 @@ const nomodify word SPRITE_PTRS = $3f8
const byte STATUS_FREE = 0
const byte STATUS_NEW = 1
const byte STATUS_PROCESSING = 2
const nomodify byte* VIC_CONTROL = (byte*) 53265
const nomodify byte* VICII_CONTROL = (byte*) 53265
const to_nomodify word* VXSIN[$28] = kickasm {{ .for(var i=0; i<40; i++) {
.word -sin(toRadians([i*360]/40))*4
}

View File

@ -10,9 +10,9 @@
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(__start)
.const VIC_RST8 = $80
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_RST8 = $80
.const VICII_DEN = $10
.const VICII_RSEL = 8
// The colors of the C64
.const BLACK = 0
.const GREEN = 5
@ -83,8 +83,8 @@ main: {
// Initialize the program
init: {
.label i = 2
// *D011 = VIC_DEN | VIC_RSEL | 3
lda #VIC_DEN|VIC_RSEL|3
// *D011 = VICII_DEN | VICII_RSEL | 3
lda #VICII_DEN|VICII_RSEL|3
sta D011
// plexInit(SCREEN)
// Initialize the multiplexer
@ -262,10 +262,10 @@ loop: {
sta BORDER_COLOR
// Sort the sprites by y-position
__b6:
// *D011&VIC_RST8
lda #VIC_RST8
// *D011&VICII_RST8
lda #VICII_RST8
and D011
// while((*D011&VIC_RST8)!=0)
// while((*D011&VICII_RST8)!=0)
cmp #0
bne __b6
lda #0

View File

@ -40,7 +40,7 @@ main::@return: scope:[main] from main::@3
void init()
init: scope:[init] from main
[17] *D011 = VIC_DEN|VIC_RSEL|3
[17] *D011 = VICII_DEN|VICII_RSEL|3
[18] call plexInit
to:init::@1
init::@1: scope:[init] from init init::@1
@ -134,7 +134,7 @@ loop::@13: scope:[loop] from loop::@5
[74] *BORDER_COLOR = BLACK
to:loop::@6
loop::@6: scope:[loop] from loop::@13 loop::@6
[75] loop::$11 = *D011 & VIC_RST8
[75] loop::$11 = *D011 & VICII_RST8
[76] if(loop::$11!=0) goto loop::@6
to:loop::@7
loop::@7: scope:[loop] from loop::@14 loop::@6

View File

@ -461,7 +461,7 @@ main::@return: scope:[main] from main::@3
void init()
init: scope:[init] from main
*D011 = VIC_DEN|VIC_RSEL|3
*D011 = VICII_DEN|VICII_RSEL|3
plexInit::screen#0 = SCREEN
call plexInit
to:init::@5
@ -606,7 +606,7 @@ loop::@15: scope:[loop] from loop::@5
to:loop::@6
loop::@6: scope:[loop] from loop::@15 loop::@6
loop::angle#20 = phi( loop::@15/loop::angle#1, loop::@6/loop::angle#20 )
loop::$11 = *D011 & VIC_RST8
loop::$11 = *D011 & VICII_RST8
loop::$12 = loop::$11 != 0
if(loop::$12) goto loop::@6
to:loop::@7
@ -729,9 +729,9 @@ const nomodify byte* SPRITES_ENABLE = (byte*)$d015
const nomodify byte* SPRITES_XMSB = (byte*)$d010
const nomodify byte* SPRITES_XPOS = (byte*)$d000
const nomodify byte* SPRITES_YPOS = (byte*)$d001
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VIC_RST8 = $80
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte VICII_RST8 = $80
void __start()
void exit()
byte~ exit::$0
@ -1198,8 +1198,8 @@ Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#1 > 0
Adding number conversion cast (unumber) 7 in keyboard_key_pressed::$0 = keyboard_key_pressed::key#2 & 7
Adding number conversion cast (unumber) keyboard_key_pressed::$0 in keyboard_key_pressed::$0 = keyboard_key_pressed::key#2 & (unumber)7
Adding number conversion cast (unumber) 3 in keyboard_key_pressed::$1 = keyboard_key_pressed::key#2 >> 3
Adding number conversion cast (unumber) VIC_DEN|VIC_RSEL|3 in *D011 = VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VIC_DEN|VIC_RSEL|3
Adding number conversion cast (unumber) VICII_DEN|VICII_RSEL|3 in *D011 = VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_DEN|VICII_RSEL|3
Adding number conversion cast (unumber) $40 in PLEX_PTR[init::i#2] = (byte)SPRITE/$40
Adding number conversion cast (unumber) 5 in init::$3 = init::i#2 * 5
Adding number conversion cast (unumber) init::$3 in init::$3 = init::i#2 * (unumber)5
@ -1241,7 +1241,7 @@ Inlining cast plex_free_next = (unumber)0
Inlining cast plex_sprite_msb = (unumber)1
Inlining cast mulf_init::dir#1 = (unumber)1
Inlining cast memset::dst#0 = (byte*)memset::str#2
Inlining cast *D011 = (unumber)VIC_DEN|VIC_RSEL|(unumber)3
Inlining cast *D011 = (unumber)VICII_DEN|VICII_RSEL|(unumber)3
Inlining cast *SPRITES_ENABLE = (unumber)$ff
Inlining cast memset::num#0 = (unumber)$3e8
Inlining cast *BORDER_COLOR = (unumber)$f
@ -1305,7 +1305,7 @@ Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 7
Simplifying constant integer cast 3
Simplifying constant integer cast VIC_DEN|VIC_RSEL|(unumber)3
Simplifying constant integer cast VICII_DEN|VICII_RSEL|(unumber)3
Simplifying constant integer cast 3
Simplifying constant integer cast $40
Simplifying constant integer cast 5
@ -1977,7 +1977,7 @@ main::@return: scope:[main] from main::@3
void init()
init: scope:[init] from main
[17] *D011 = VIC_DEN|VIC_RSEL|3
[17] *D011 = VICII_DEN|VICII_RSEL|3
[18] call plexInit
to:init::@1
init::@1: scope:[init] from init init::@1
@ -2071,7 +2071,7 @@ loop::@13: scope:[loop] from loop::@5
[74] *BORDER_COLOR = BLACK
to:loop::@6
loop::@6: scope:[loop] from loop::@13 loop::@6
[75] loop::$11 = *D011 & VIC_RST8
[75] loop::$11 = *D011 & VICII_RST8
[76] if(loop::$11!=0) goto loop::@6
to:loop::@7
loop::@7: scope:[loop] from loop::@14 loop::@6
@ -2856,7 +2856,7 @@ Statement [2] plex_show_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] plex_sprite_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] plex_sprite_msb = 1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] plex_free_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [17] *D011 = VIC_DEN|VIC_RSEL|3 [ ] ( main:7::init:10 [ ] { } ) always clobbers reg byte a
Statement [17] *D011 = VICII_DEN|VICII_RSEL|3 [ ] ( main:7::init:10 [ ] { } ) always clobbers reg byte a
Statement [20] PLEX_PTR[init::i#2] = (byte)SPRITE/$40 [ PLEX_SCREEN_PTR init::i#2 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:2 [ init::i#2 init::i#1 ]
Statement [21] init::$10 = init::i#2 << 2 [ PLEX_SCREEN_PTR init::i#2 init::$10 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 init::$10 ] { } ) always clobbers reg byte a
@ -2891,7 +2891,7 @@ Statement [68] loop::r#1 = loop::r#2 + 3 [ PLEX_SCREEN_PTR loop::angle#6 loop::i
Statement [71] *BORDER_COLOR = 3 [ PLEX_SCREEN_PTR loop::angle#6 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR loop::angle#6 ] { } ) always clobbers reg byte a
Statement [73] loop::angle#1 = loop::angle#6 + 3 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] { } ) always clobbers reg byte a
Statement [74] *BORDER_COLOR = BLACK [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] { } ) always clobbers reg byte a
Statement [75] loop::$11 = *D011 & VIC_RST8 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a
Statement [75] loop::$11 = *D011 & VICII_RST8 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a
Statement [78] *BORDER_COLOR = BLACK [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:8 [ loop::i1#5 loop::i1#1 ]
Statement [79] loop::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 loop::plexFreeNextYpos1_return#0 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 loop::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y
@ -2976,7 +2976,7 @@ Statement [2] plex_show_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] plex_sprite_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] plex_sprite_msb = 1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] plex_free_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [17] *D011 = VIC_DEN|VIC_RSEL|3 [ ] ( main:7::init:10 [ ] { } ) always clobbers reg byte a
Statement [17] *D011 = VICII_DEN|VICII_RSEL|3 [ ] ( main:7::init:10 [ ] { } ) always clobbers reg byte a
Statement [20] PLEX_PTR[init::i#2] = (byte)SPRITE/$40 [ PLEX_SCREEN_PTR init::i#2 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 ] { } ) always clobbers reg byte a
Statement [21] init::$10 = init::i#2 << 2 [ PLEX_SCREEN_PTR init::i#2 init::$10 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 init::$10 ] { } ) always clobbers reg byte a
Statement [22] init::$3 = init::$10 + init::i#2 [ PLEX_SCREEN_PTR init::i#2 init::$3 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 init::$3 ] { } ) always clobbers reg byte a
@ -3003,7 +3003,7 @@ Statement [68] loop::r#1 = loop::r#2 + 3 [ PLEX_SCREEN_PTR loop::angle#6 loop::i
Statement [71] *BORDER_COLOR = 3 [ PLEX_SCREEN_PTR loop::angle#6 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR loop::angle#6 ] { } ) always clobbers reg byte a
Statement [73] loop::angle#1 = loop::angle#6 + 3 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] { } ) always clobbers reg byte a reg byte x
Statement [74] *BORDER_COLOR = BLACK [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] { } ) always clobbers reg byte a
Statement [75] loop::$11 = *D011 & VIC_RST8 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a
Statement [75] loop::$11 = *D011 & VICII_RST8 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a
Statement [78] *BORDER_COLOR = BLACK [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 ] { } ) always clobbers reg byte a
Statement [79] loop::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 loop::plexFreeNextYpos1_return#0 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 loop::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y
Statement [84] if(loop::i1#1!=PLEX_COUNT-1+1) goto loop::@7 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#1 ] { } ) always clobbers reg byte a
@ -3063,7 +3063,7 @@ Statement [2] plex_show_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [3] plex_sprite_idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [4] plex_sprite_msb = 1 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [5] plex_free_next = 0 [ ] ( [ ] { } ) always clobbers reg byte a
Statement [17] *D011 = VIC_DEN|VIC_RSEL|3 [ ] ( main:7::init:10 [ ] { } ) always clobbers reg byte a
Statement [17] *D011 = VICII_DEN|VICII_RSEL|3 [ ] ( main:7::init:10 [ ] { } ) always clobbers reg byte a
Statement [20] PLEX_PTR[init::i#2] = (byte)SPRITE/$40 [ PLEX_SCREEN_PTR init::i#2 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 ] { } ) always clobbers reg byte a
Statement [21] init::$10 = init::i#2 << 2 [ PLEX_SCREEN_PTR init::i#2 init::$10 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 init::$10 ] { } ) always clobbers reg byte a
Statement [22] init::$3 = init::$10 + init::i#2 [ PLEX_SCREEN_PTR init::i#2 init::$3 ] ( main:7::init:10 [ PLEX_SCREEN_PTR init::i#2 init::$3 ] { } ) always clobbers reg byte a
@ -3090,7 +3090,7 @@ Statement [68] loop::r#1 = loop::r#2 + 3 [ PLEX_SCREEN_PTR loop::angle#6 loop::i
Statement [71] *BORDER_COLOR = 3 [ PLEX_SCREEN_PTR loop::angle#6 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR loop::angle#6 ] { } ) always clobbers reg byte a
Statement [73] loop::angle#1 = loop::angle#6 + 3 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] { } ) always clobbers reg byte a reg byte x
Statement [74] *BORDER_COLOR = BLACK [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 ] { } ) always clobbers reg byte a
Statement [75] loop::$11 = *D011 & VIC_RST8 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a
Statement [75] loop::$11 = *D011 & VICII_RST8 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::$11 ] { } ) always clobbers reg byte a
Statement [78] *BORDER_COLOR = BLACK [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 ] { } ) always clobbers reg byte a
Statement [79] loop::plexFreeNextYpos1_return#0 = PLEX_FREE_YPOS[plex_free_next] [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 loop::plexFreeNextYpos1_return#0 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#5 loop::plexFreeNextYpos1_return#0 ] { } ) always clobbers reg byte y
Statement [84] if(loop::i1#1!=PLEX_COUNT-1+1) goto loop::@7 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#1 ] ( main:7::loop:12 [ PLEX_SCREEN_PTR plex_show_idx plex_sprite_idx plex_sprite_msb plex_free_next loop::angle#1 loop::i1#1 ] { } ) always clobbers reg byte a
@ -3396,9 +3396,9 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Basic
:BasicUpstart(__start)
// Global Constants & labels
.const VIC_RST8 = $80
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_RST8 = $80
.const VICII_DEN = $10
.const VICII_RSEL = 8
// The colors of the C64
.const BLACK = 0
.const GREEN = 5
@ -3506,8 +3506,8 @@ main: {
// Initialize the program
init: {
.label i = 2
// [17] *D011 = VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_RSEL|3
// [17] *D011 = VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_RSEL|3
sta D011
// [18] call plexInit
// Initialize the multiplexer
@ -3788,8 +3788,8 @@ loop: {
// Sort the sprites by y-position
// loop::@6
__b6:
// [75] loop::$11 = *D011 & VIC_RST8 -- vbuaa=_deref_pbuc1_band_vbuc2
lda #VIC_RST8
// [75] loop::$11 = *D011 & VICII_RST8 -- vbuaa=_deref_pbuc1_band_vbuc2
lda #VICII_RST8
and D011
// [76] if(loop::$11!=0) goto loop::@6 -- vbuaa_neq_0_then_la1
cmp #0
@ -4921,9 +4921,9 @@ const nomodify byte* SPRITES_ENABLE = (byte*) 53269
const nomodify byte* SPRITES_XMSB = (byte*) 53264
const nomodify byte* SPRITES_XPOS = (byte*) 53248
const nomodify byte* SPRITES_YPOS = (byte*) 53249
const nomodify byte VIC_DEN = $10
const nomodify byte VIC_RSEL = 8
const nomodify byte VIC_RST8 = $80
const nomodify byte VICII_DEN = $10
const nomodify byte VICII_RSEL = 8
const nomodify byte VICII_RST8 = $80
void __start()
void exit()
byte~ exit::$0 reg byte a 2002.0
@ -5214,9 +5214,9 @@ Score: 74811
.segment Basic
:BasicUpstart(__start)
// Global Constants & labels
.const VIC_RST8 = $80
.const VIC_DEN = $10
.const VIC_RSEL = 8
.const VICII_RST8 = $80
.const VICII_DEN = $10
.const VICII_RSEL = 8
// The colors of the C64
.const BLACK = 0
.const GREEN = 5
@ -5315,9 +5315,9 @@ main: {
// Initialize the program
init: {
.label i = 2
// *D011 = VIC_DEN | VIC_RSEL | 3
// [17] *D011 = VIC_DEN|VIC_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_RSEL|3
// *D011 = VICII_DEN | VICII_RSEL | 3
// [17] *D011 = VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2
lda #VICII_DEN|VICII_RSEL|3
sta D011
// plexInit(SCREEN)
// [18] call plexInit
@ -5591,11 +5591,11 @@ loop: {
// Sort the sprites by y-position
// loop::@6
__b6:
// *D011&VIC_RST8
// [75] loop::$11 = *D011 & VIC_RST8 -- vbuaa=_deref_pbuc1_band_vbuc2
lda #VIC_RST8
// *D011&VICII_RST8
// [75] loop::$11 = *D011 & VICII_RST8 -- vbuaa=_deref_pbuc1_band_vbuc2
lda #VICII_RST8
and D011
// while((*D011&VIC_RST8)!=0)
// while((*D011&VICII_RST8)!=0)
// [76] if(loop::$11!=0) goto loop::@6 -- vbuaa_neq_0_then_la1
cmp #0
bne __b6

Some files were not shown because too many files have changed in this diff Show More