1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Adding more C64DTV test programs

This commit is contained in:
Jesper Gravgaard 2018-04-15 20:02:48 +02:00
parent 9cc3490f28
commit c29d278146
11 changed files with 5789 additions and 0 deletions

View File

@ -0,0 +1,3 @@
lda #{c1}
cmp {c2}
beq {la1}

View File

@ -0,0 +1,3 @@
lda #{c1}
cmp {c2}
bne {la1}

View File

@ -45,6 +45,21 @@ public class TestPrograms {
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
} }
@Test
public void testC64DtvBlitterMin() throws IOException, URISyntaxException {
compileAndCompare("c64dtv-blittermin");
}
@Test
public void testC64Dtv8bppChunkyStretch() throws IOException, URISyntaxException {
compileAndCompare("c64dtv-8bppchunkystretch");
}
@Test
public void testC64Dtv8bppCharStretch() throws IOException, URISyntaxException {
compileAndCompare("c64dtv-8bppcharstretch");
}
@Test @Test
public void testC64DtvGfxExplorer() throws IOException, URISyntaxException { public void testC64DtvGfxExplorer() throws IOException, URISyntaxException {
compileAndCompare("c64dtv-gfxexplorer"); compileAndCompare("c64dtv-gfxexplorer");

View File

@ -0,0 +1,119 @@
// C64DTV 8bpp charmode stretcher
import "c64dtv.kc"
// Plane with the screen
const byte* SCREEN = $7c00;
// Plane with all pixels
const byte* CHARSET8 = $8000;
void main() {
asm { sei } // Disable normal interrupt (prevent keyboard reading glitches and allows to hide basic/kernal)
// Disable kernal & basic
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
gfx_init();
// Enable DTV extended modes
*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;
// Plane A: SCREEN
*DTV_PLANEA_START_LO = < SCREEN;
*DTV_PLANEA_START_MI = > SCREEN;
*DTV_PLANEA_START_HI = 0;
*DTV_PLANEA_STEP = 1;
*DTV_PLANEA_MODULO_LO = 0;
*DTV_PLANEA_MODULO_HI = 0;
// Plane B: CHARSET8
*DTV_PLANEB_START_LO = < CHARSET8;
*DTV_PLANEB_START_MI = > CHARSET8;
*DTV_PLANEB_START_HI = 0;
*DTV_PLANEB_STEP = 0;
*DTV_PLANEB_MODULO_LO = 0;
*DTV_PLANEB_MODULO_HI = 0;
// VIC Graphics Bank
*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)>>6) | ((>(((word)SCREEN)&$3fff))>>2);
// DTV Palette - Grey Tones
for(byte j : 0..$f) {
DTV_PALETTE[j] = j;
}
while(true) {
// Stabilize Raster
asm {
ldx #$ff
rff:
cpx RASTER
bne rff
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
cpx RASTER
beq eat+0
eat:
inx
cpx #$08
bne stabilize
}
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3;
*BORDERCOL = 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);
*BORDERCOL = rst<<4;
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
} while (rst!=$f2);
}
}
// Initialize the different graphics in the memory
void gfx_init() {
gfx_init_screen0();
gfx_init_plane_charset8();
}
// Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos)
void gfx_init_screen0() {
byte* ch=SCREEN;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*ch++ = (cy&$f)<<4|(cx&$f);
}
}
}
// Initialize Plane with 8bpp charset
void gfx_init_plane_charset8() {
// 8bpp cells for Plane B (charset) - ROM charset with 256 colors
byte gfxbCpuBank = (byte)(CHARSET8/$4000);
dtvSetCpuBankSegment1(gfxbCpuBank++);
byte* gfxa = $4000 + (((word)CHARSET8)& $3fff);
byte* chargen = CHARGEN+1;
*PROCPORT = PROCPORT_RAM_CHARROM;
byte col = 0;
for(byte ch : $00..$ff) {
for ( byte cr : 0..7) {
byte bits = *chargen++;
for ( byte cp : 0..7) {
byte c = 0;
if((bits & $80) != 0) {
c = col;
}
*gfxa++ = c;
bits = bits<<1;
col++;
}
}
}
*PROCPORT = PROCPORT_RAM_IO;
// Reset CPU BANK segment to $4000
dtvSetCpuBankSegment1((byte)($4000/$4000));
}

View File

@ -0,0 +1,86 @@
// C64DTV 8bpp charmode stretcher
import "c64dtv.kc"
// Plane with all pixels
const byte* CHUNKY = $8000;
void main() {
asm { sei } // Disable normal interrupt (prevent keyboard reading glitches and allows to hide basic/kernal)
// Disable kernal & basic
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
gfx_init_chunky();
// Enable DTV extended modes
*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;
// Plane B: CHUNKY
*DTV_PLANEB_START_LO = < CHUNKY;
*DTV_PLANEB_START_MI = > CHUNKY;
*DTV_PLANEB_START_HI = 0;
*DTV_PLANEB_STEP = 8;
*DTV_PLANEB_MODULO_LO = 0;
*DTV_PLANEB_MODULO_HI = 0;
// VIC Graphics Bank
*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)>>6) | ((>(((word)CHUNKY)&$3fff))>>2);
// DTV Palette - Grey Tones
for(byte j : 0..$f) {
DTV_PALETTE[j] = j;
}
while(true) {
// Stabilize Raster
asm {
ldx #$ff
rff:
cpx RASTER
bne rff
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
cpx RASTER
beq eat+0
eat:
inx
cpx #$08
bne stabilize
}
*VIC_CONTROL = VIC_DEN | VIC_ECM | VIC_RSEL | 3;
*BORDERCOL = 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);
*BORDERCOL = rst<<4;
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
} while (rst!=$f2);
}
}
// Initialize Plane with 8bpp chunky
void gfx_init_chunky() {
// 320x200 8bpp pixels for Plane
byte gfxbCpuBank = (byte)(CHUNKY/$4000);
dtvSetCpuBankSegment1(gfxbCpuBank++);
byte* gfxb = $4000;
for(byte y : 0..50) {
for (word x : 0..319) {
// If we have crossed to $8000 increase the CPU BANK segment and reset to $4000
if(gfxb==$8000) {
dtvSetCpuBankSegment1(gfxbCpuBank++);
gfxb = $4000;
}
byte c = (byte)(x+y);
*gfxb++ = c;
}
}
// Reset CPU BANK segment to $4000
dtvSetCpuBankSegment1((byte)($4000/$4000));
}

View File

@ -0,0 +1,48 @@
import "c64dtv.kc"
const byte* SCREEN = $400;
const byte[] SRCA = { 'C', 'a', 'm', 'e', 'l', 'o', 't', '!'};
const byte SRCA_LEN = 8;
const byte[] SRCB = { 1 };
void main() {
*DTV_FEATURE = DTV_FEATURE_ENABLE;
*DTV_BLITTER_SRCA_LO = <SRCA;
*DTV_BLITTER_SRCA_MI = >SRCA;
*DTV_BLITTER_SRCA_HI = 0;
*DTV_BLITTER_SRCA_MOD_LO = 0;
*DTV_BLITTER_SRCA_MOD_HI = 0;
*DTV_BLITTER_SRCA_LIN_LO = <$100;
*DTV_BLITTER_SRCA_LIN_HI = >$100;
*DTV_BLITTER_SRCA_STEP = $10; // Step 1.0
*DTV_BLITTER_SRCB_LO = <SRCB;
*DTV_BLITTER_SRCB_MI = >SRCB;
*DTV_BLITTER_SRCB_HI = 0;
*DTV_BLITTER_SRCB_MOD_LO = 0;
*DTV_BLITTER_SRCB_MOD_HI = 0;
*DTV_BLITTER_SRCB_LIN_LO = <$100;
*DTV_BLITTER_SRCB_LIN_HI = >$100;
*DTV_BLITTER_SRCB_STEP = $00; // Step 0.0
*DTV_BLITTER_DEST_LO = <SCREEN;
*DTV_BLITTER_DEST_MI = >SCREEN;
*DTV_BLITTER_DEST_HI = 0;
*DTV_BLITTER_DEST_MOD_LO = 0;
*DTV_BLITTER_DEST_MOD_HI = 0;
*DTV_BLITTER_DEST_LIN_LO = <$100;
*DTV_BLITTER_DEST_LIN_HI = >$100;
*DTV_BLITTER_DEST_STEP = $10; // Step 1.0
*DTV_BLITTER_LEN_LO = SRCA_LEN;
*DTV_BLITTER_LEN_HI = 0;
*DTV_BLITTER_ALU = DTV_BLIT_ADD;
*DTV_BLITTER_CONTROL2 = DTV_BLIT_DEST_CONT | DTV_BLIT_CLEAR_IRQ;
*DTV_BLITTER_TRANSPARANCY = DTV_BLIT_TRANSPARANCY_NONE;
*DTV_BLITTER_CONTROL = DTV_BLIT_FORCE_START | DTV_BLIT_SRCA_FWD | DTV_BLIT_SRCB_FWD| DTV_BLIT_DEST_FWD;
}

View File

@ -76,3 +76,109 @@ void dtvSetCpuBankSegment1(byte cpuBankIdx) {
.byte $32, $00 .byte $32, $00
} }
} }
// Blitter Source A Start
const byte* DTV_BLITTER_SRCA_LO = $d320;
const byte* DTV_BLITTER_SRCA_MI = $d321;
const byte* DTV_BLITTER_SRCA_HI = $d322;
// Blitter Source A Modulo
const byte* DTV_BLITTER_SRCA_MOD_LO = $d323;
const byte* DTV_BLITTER_SRCA_MOD_HI = $d324;
// Blitter Source A Line Length
const byte* DTV_BLITTER_SRCA_LIN_LO = $d325;
const byte* DTV_BLITTER_SRCA_LIN_HI = $d326;
// Blitter Source A Step ([7:4] integral part, [3:0] fractional part)
const byte* DTV_BLITTER_SRCA_STEP = $d327;
// Blitter Source B Start
const byte* DTV_BLITTER_SRCB_LO = $d328;
const byte* DTV_BLITTER_SRCB_MI = $d329;
const byte* DTV_BLITTER_SRCB_HI = $d32a;
// Blitter Source B Modulo
const byte* DTV_BLITTER_SRCB_MOD_LO = $d32b;
const byte* DTV_BLITTER_SRCB_MOD_HI = $d32c;
// Blitter Source B Line Length
const byte* DTV_BLITTER_SRCB_LIN_LO = $d32d;
const byte* DTV_BLITTER_SRCB_LIN_HI = $d32e;
// Blitter Source B Step ([7:4] integral part, [3:0] fractional part)
const byte* DTV_BLITTER_SRCB_STEP = $d32f;
// Blitter Destination Start
const byte* DTV_BLITTER_DEST_LO = $d330;
const byte* DTV_BLITTER_DEST_MI = $d331;
const byte* DTV_BLITTER_DEST_HI = $d332;
// Blitter Source B Modulo
const byte* DTV_BLITTER_DEST_MOD_LO = $d333;
const byte* DTV_BLITTER_DEST_MOD_HI = $d334;
// Blitter Source B Line Length
const byte* DTV_BLITTER_DEST_LIN_LO = $d335;
const byte* DTV_BLITTER_DEST_LIN_HI = $d336;
// Blitter Source B Step ([7:4] integral part, [3:0] fractional part)
const byte* DTV_BLITTER_DEST_STEP = $d337;
// Blitter Blit Length
const byte* DTV_BLITTER_LEN_LO = $d338;
const byte* DTV_BLITTER_LEN_HI = $d339;
// Blitter Control
const byte* DTV_BLITTER_CONTROL = $d33a;
// Bit[0] Force Start Strobe when set
const byte DTV_BLIT_FORCE_START = %00000001;
// Bit[1] Source A Direction Positive when set
const byte DTV_BLIT_SRCA_FWD = %00000010;
// Bit[2] Source B Direction Positive when set
const byte DTV_BLIT_SRCB_FWD = %00000100;
// Bit[3] Destination Direction Positive when set
const byte DTV_BLIT_DEST_FWD = %00001000;
// Bit[4] VIC IRQ Start when set
const byte DTV_BLIT_VIC_IRQ = %00010000;
// Bit[5] CIA IRQ Start when set($DCXX CIA)
const byte DTV_BLIT_CIA_IRQ = %00100000;
// Bit[6] V Blank Start when set
const byte DTV_BLIT_VBLANK = %01000000;
// Bit[7] Blitter IRQ Enable when set
const byte DTV_BLIT_IRQ_EN = %10000000;
// Blitter Transparency
const byte* DTV_BLITTER_TRANSPARANCY = $d33b;
// Bit[0] Disable Channel B.
// (data into b port of ALU is forced to %00000000. ALU functions as normal)
const byte DTV_BLIT_DISABLE_B = %00000001;
// Bit[1] Write Transparent Data when set
//(Data will be written if source a data *IS* %00000000. This can be used with channel b and ALU set to OR to write Data masked by source A.) Cycles will be saved if No writes.
const byte DTV_BLIT_WRITE_TRANSPARENT = %00000010;
// Bit[2] Write Non Transparent
// when set (Data will be written if SourceA fetched data is *NOT* %00000000. This may be used combined with channel b data and/or ALU) Cycles will be Saved if no write. Bit[2]==Bit[1]==0: write in any case
const byte DTV_BLIT_WRITE_NONTRANSPARENT = %00000100;
// No transparancy
// Bit[2]==Bit[1]==0: write in any case
const byte DTV_BLIT_TRANSPARANCY_NONE = %00000001;
// Controls the ALU operation
byte* DTV_BLITTER_ALU = $d33e;
// Bit[2:0] Source A right Shift: 000 SourceA Data, 001 LastA[0],SourceA[7:1], ..., 111 LastA[6:0],SourceA[7]
const byte DTV_BLIT_SHIFT0 = %00000000;
const byte DTV_BLIT_SHIFT1 = %00000001;
const byte DTV_BLIT_SHIFT2 = %00000010;
const byte DTV_BLIT_SHIFT3 = %00000011;
const byte DTV_BLIT_SHIFT4 = %00000100;
const byte DTV_BLIT_SHIFT5 = %00000101;
const byte DTV_BLIT_SHIFT6 = %00000110;
const byte DTV_BLIT_SHIFT7 = %00000111;
// Bit[5:3] Minterms/ALU
const byte DTV_BLIT_AND = %00000000;
const byte DTV_BLIT_NAND = %00001000;
const byte DTV_BLIT_NOR = %00010000;
const byte DTV_BLIT_OR = %00011000;
const byte DTV_BLIT_XOR = %00100000;
const byte DTV_BLIT_XNOR = %00101000;
const byte DTV_BLIT_ADD = %00110000;
const byte DTV_BLIT_SUB = %00111000;
// Blitter Control 2
const byte* DTV_BLITTER_CONTROL2 = $d33f;
// Bit[0] Clear Blitter IRQ
const byte DTV_BLIT_CLEAR_IRQ = %00000001;
// Bit[1] Source A Continue
const byte DTV_BLIT_SRCA_CONT = %00000010;
// Bit[2] Source B Continue
const byte DTV_BLIT_SRCB_CONT = %00000100;
// Bit[3] Destination Continue
const byte DTV_BLIT_DEST_CONT = %00001000;
// Bit[0] Busy when set (When reading)
const byte DTV_BLIT_STATUS_BUSY = %00000001;
// Bit[1] IRQ when set (When reading)
const byte DTV_BLIT_STATUS_IRQ = %00000010;

View File

@ -0,0 +1,306 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label PROCPORT_DDR = 0
.const PROCPORT_DDR_MEMORY_MASK = 7
.label PROCPORT = 1
.const PROCPORT_RAM_IO = $35
.const PROCPORT_RAM_CHARROM = $31
.label CHARGEN = $d000
.label RASTER = $d012
.label BORDERCOL = $d020
.label VIC_CONTROL = $d011
.const VIC_ECM = $40
.const VIC_DEN = $10
.const VIC_RSEL = 8
.label VIC_CONTROL2 = $d016
.const VIC_MCM = $10
.const VIC_CSEL = 8
.label VIC_MEMORY = $d018
.label CIA2_PORT_A = $dd00
.label CIA2_PORT_A_DDR = $dd02
.label DTV_FEATURE = $d03f
.const DTV_FEATURE_ENABLE = 1
.label DTV_CONTROL = $d03c
.const DTV_LINEAR = 1
.const DTV_HIGHCOLOR = 4
.const DTV_BADLINE_OFF = $20
.const DTV_CHUNKY = $40
.label DTV_PALETTE = $d200
.label DTV_PLANEA_START_LO = $d03a
.label DTV_PLANEA_START_MI = $d03b
.label DTV_PLANEA_START_HI = $d045
.label DTV_PLANEA_STEP = $d046
.label DTV_PLANEA_MODULO_LO = $d038
.label DTV_PLANEA_MODULO_HI = $d039
.label DTV_PLANEB_START_LO = $d049
.label DTV_PLANEB_START_MI = $d04a
.label DTV_PLANEB_START_HI = $d04b
.label DTV_PLANEB_STEP = $d04c
.label DTV_PLANEB_MODULO_LO = $d047
.label DTV_PLANEB_MODULO_HI = $d048
.label SCREEN = $7c00
.label CHARSET8 = $8000
jsr main
main: {
sei
lda #PROCPORT_DDR_MEMORY_MASK
sta PROCPORT_DDR
lda #PROCPORT_RAM_IO
sta PROCPORT
jsr gfx_init
lda #DTV_FEATURE_ENABLE
sta DTV_FEATURE
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_BADLINE_OFF
sta DTV_CONTROL
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
lda #VIC_MCM|VIC_CSEL
sta VIC_CONTROL2
lda #<SCREEN
sta DTV_PLANEA_START_LO
lda #>SCREEN
sta DTV_PLANEA_START_MI
lda #0
sta DTV_PLANEA_START_HI
lda #1
sta DTV_PLANEA_STEP
lda #0
sta DTV_PLANEA_MODULO_LO
sta DTV_PLANEA_MODULO_HI
lda #<CHARSET8
sta DTV_PLANEB_START_LO
lda #>CHARSET8
sta DTV_PLANEB_START_MI
lda #0
sta DTV_PLANEB_START_HI
sta DTV_PLANEB_STEP
sta DTV_PLANEB_MODULO_LO
sta DTV_PLANEB_MODULO_HI
lda #3
sta CIA2_PORT_A_DDR
lda #3^SCREEN/$4000
sta CIA2_PORT_A
lda #(SCREEN&$3fff)>>6|(>(SCREEN&$3fff))>>2
sta VIC_MEMORY
ldx #0
b1:
txa
sta DTV_PALETTE,x
inx
cpx #$10
bne b1
b3:
ldx #$ff
rff:
cpx RASTER
bne rff
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
cpx RASTER
beq eat+0
eat:
inx
cpx #8
bne stabilize
lda #VIC_DEN|VIC_ECM|VIC_RSEL|3
sta VIC_CONTROL
lda #0
sta BORDERCOL
b5:
lda RASTER
cmp #$42
bne b5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
b8:
ldx RASTER
txa
and #7
ora #VIC_DEN|VIC_ECM|VIC_RSEL
sta VIC_CONTROL
txa
asl
asl
asl
asl
sta BORDERCOL
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cpx #$f2
bne b8
jmp b3
}
gfx_init: {
jsr gfx_init_screen0
jsr gfx_init_plane_charset8
rts
}
gfx_init_plane_charset8: {
.const gfxbCpuBank = $ff&CHARSET8/$4000
.label bits = 6
.label chargen = 3
.label gfxa = 7
.label col = 9
.label cr = 5
.label ch = 2
lda #gfxbCpuBank
jsr dtvSetCpuBankSegment1
lda #PROCPORT_RAM_CHARROM
sta PROCPORT
lda #0
sta ch
sta col
lda #<$4000+(CHARSET8&$3fff)
sta gfxa
lda #>$4000+(CHARSET8&$3fff)
sta gfxa+1
lda #<CHARGEN
sta chargen
lda #>CHARGEN
sta chargen+1
b1:
lda #0
sta cr
b2:
ldy #0
lda (chargen),y
sta bits
inc chargen
bne !+
inc chargen+1
!:
ldx #0
b3:
lda #$80
and bits
cmp #0
beq b5
lda col
jmp b4
b5:
lda #0
b4:
ldy #0
sta (gfxa),y
inc gfxa
bne !+
inc gfxa+1
!:
asl bits
inc col
inx
cpx #8
bne b3
inc cr
lda cr
cmp #8
bne b2
inc ch
lda ch
bne b1
lda #PROCPORT_RAM_IO
sta PROCPORT
lda #$4000/$4000
jsr dtvSetCpuBankSegment1
rts
}
dtvSetCpuBankSegment1: {
.label cpuBank = $ff
sta cpuBank
.byte $32, $dd
lda $ff
.byte $32, $00
rts
}
gfx_init_screen0: {
.label _1 = 5
.label ch = 3
.label cy = 2
lda #<SCREEN
sta ch
lda #>SCREEN
sta ch+1
lda #0
sta cy
b1:
ldx #0
b2:
lda #$f
and cy
asl
asl
asl
asl
sta _1
txa
and #$f
ora _1
ldy #0
sta (ch),y
inc ch
bne !+
inc ch+1
!:
inx
cpx #$28
bne b2
inc cy
lda cy
cmp #$19
bne b1
rts
}

View File

@ -0,0 +1,170 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@5
@5: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @5
[3] phi() [ ] ( )
main: scope:[main] from @5
asm { sei }
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] )
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] )
[7] call gfx_init param-assignment [ ] ( main:2 [ ] )
to:main::@17
main::@17: scope:[main] from main
[8] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] )
[9] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_BADLINE_OFF#0 [ ] ( main:2 [ ] )
[10] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] )
[11] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_MCM#0|(const byte) VIC_CSEL#0 [ ] ( main:2 [ ] )
[12] *((const byte*) DTV_PLANEA_START_LO#0) ← <(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
[13] *((const byte*) DTV_PLANEA_START_MI#0) ← >(const byte*) SCREEN#0 [ ] ( main:2 [ ] )
[14] *((const byte*) DTV_PLANEA_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
[15] *((const byte*) DTV_PLANEA_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] )
[16] *((const byte*) DTV_PLANEA_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
[17] *((const byte*) DTV_PLANEA_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
[18] *((const byte*) DTV_PLANEB_START_LO#0) ← <(const byte*) CHARSET8#0 [ ] ( main:2 [ ] )
[19] *((const byte*) DTV_PLANEB_START_MI#0) ← >(const byte*) CHARSET8#0 [ ] ( main:2 [ ] )
[20] *((const byte*) DTV_PLANEB_START_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
[21] *((const byte*) DTV_PLANEB_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
[22] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
[23] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
[24] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] )
[25] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) SCREEN#0/(word/signed word/dword/signed dword) 16384 [ ] ( main:2 [ ] )
[26] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 6|>((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383>>(byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main::@1 main::@17
[27] (byte) main::j#2 ← phi( main::@1/(byte) main::j#1 main::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::j#2 ] ( main:2 [ main::j#2 ] )
[28] *((const byte*) DTV_PALETTE#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] ( main:2 [ main::j#2 ] )
[29] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::j#1 ] ( main:2 [ main::j#1 ] )
[30] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto main::@1 [ main::j#1 ] ( main:2 [ main::j#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1 main::@8
[31] if(true) goto main::@3 [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@2
[32] return [ ] ( main:2 [ ] )
to:@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 }
[34] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] )
[35] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
to:main::@5
main::@5: scope:[main] from main::@3 main::@5
[36] if(*((const byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 66) goto main::@5 [ ] ( main:2 [ ] )
to:main::@7
main::@7: scope:[main] from main::@5
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
to:main::@8
main::@8: scope:[main] from main::@7 main::@8
[38] (byte) main::rst#1 ← *((const byte*) RASTER#0) [ main::rst#1 ] ( main:2 [ main::rst#1 ] )
[39] (byte~) main::$33 ← (byte) main::rst#1 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ main::rst#1 main::$33 ] ( main:2 [ main::rst#1 main::$33 ] )
[40] (byte~) main::$34 ← (const byte) VIC_DEN#0|(const byte) VIC_ECM#0|(const byte) VIC_RSEL#0 | (byte~) main::$33 [ main::rst#1 main::$34 ] ( main:2 [ main::rst#1 main::$34 ] )
[41] *((const byte*) VIC_CONTROL#0) ← (byte~) main::$34 [ main::rst#1 ] ( main:2 [ main::rst#1 ] )
[42] (byte~) main::$35 ← (byte) main::rst#1 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::rst#1 main::$35 ] ( main:2 [ main::rst#1 main::$35 ] )
[43] *((const byte*) BORDERCOL#0) ← (byte~) main::$35 [ main::rst#1 ] ( main:2 [ main::rst#1 ] )
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
[45] if((byte) main::rst#1!=(byte/word/signed word/dword/signed dword) 242) goto main::@8 [ ] ( main:2 [ ] )
to:main::@2
gfx_init: scope:[gfx_init] from main
[46] phi() [ ] ( main:2::gfx_init:7 [ ] )
[47] call gfx_init_screen0 param-assignment [ ] ( main:2::gfx_init:7 [ ] )
to:gfx_init::@1
gfx_init::@1: scope:[gfx_init] from gfx_init
[48] phi() [ ] ( main:2::gfx_init:7 [ ] )
[49] call gfx_init_plane_charset8 param-assignment [ ] ( main:2::gfx_init:7 [ ] )
to:gfx_init::@return
gfx_init::@return: scope:[gfx_init] from gfx_init::@1
[50] return [ ] ( main:2::gfx_init:7 [ ] )
to:@return
gfx_init_plane_charset8: scope:[gfx_init_plane_charset8] from gfx_init::@1
[51] phi() [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ ] )
[52] call dtvSetCpuBankSegment1 param-assignment [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ ] )
to:gfx_init_plane_charset8::@9
gfx_init_plane_charset8::@9: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8
[53] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ ] )
to:gfx_init_plane_charset8::@1
gfx_init_plane_charset8::@1: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@9
[54] (byte) gfx_init_plane_charset8::ch#8 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::ch#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] )
[54] (byte) gfx_init_plane_charset8::col#6 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] )
[54] (byte*) gfx_init_plane_charset8::gfxa#6 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::@9/((byte*))(word/signed word/dword/signed dword) 16384+((word))(const byte*) CHARSET8#0&(word/signed word/dword/signed dword) 16383 ) [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] )
[54] (byte*) gfx_init_plane_charset8::chargen#3 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::@9/(const byte*) CHARGEN#0 ) [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::ch#8 ] )
to:gfx_init_plane_charset8::@2
gfx_init_plane_charset8::@2: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@6
[55] (byte) gfx_init_plane_charset8::cr#6 ← phi( gfx_init_plane_charset8::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::cr#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] )
[55] (byte) gfx_init_plane_charset8::col#5 ← phi( gfx_init_plane_charset8::@1/(byte) gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::col#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] )
[55] (byte*) gfx_init_plane_charset8::gfxa#5 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::gfxa#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] )
[55] (byte*) gfx_init_plane_charset8::chargen#2 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::chargen#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 ] )
[56] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] )
[57] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] )
to:gfx_init_plane_charset8::@3
gfx_init_plane_charset8::@3: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@4
[58] (byte) gfx_init_plane_charset8::cp#2 ← phi( gfx_init_plane_charset8::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::cp#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] )
[58] (byte) gfx_init_plane_charset8::col#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::col#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] )
[58] (byte*) gfx_init_plane_charset8::gfxa#2 ← phi( gfx_init_plane_charset8::@2/(byte*) gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::@4/(byte*) gfx_init_plane_charset8::gfxa#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] )
[58] (byte) gfx_init_plane_charset8::bits#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::bits#1 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] )
[59] (byte~) gfx_init_plane_charset8::$6 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$6 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$6 ] )
[60] if((byte~) gfx_init_plane_charset8::$6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] )
to:gfx_init_plane_charset8::@5
gfx_init_plane_charset8::@5: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@3
[61] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::c#3 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::c#3 ] )
to:gfx_init_plane_charset8::@4
gfx_init_plane_charset8::@4: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5
[62] (byte) gfx_init_plane_charset8::c#2 ← phi( gfx_init_plane_charset8::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@5/(byte~) gfx_init_plane_charset8::c#3 ) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::c#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::c#2 ] )
[63] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] )
[64] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] )
[65] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::bits#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::bits#1 ] )
[66] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::bits#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::bits#1 ] )
[67] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#1 gfx_init_plane_charset8::cp#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#1 gfx_init_plane_charset8::cp#1 ] )
[68] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#1 gfx_init_plane_charset8::cp#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#1 gfx_init_plane_charset8::cp#1 ] )
to:gfx_init_plane_charset8::@6
gfx_init_plane_charset8::@6: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@4
[69] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#1 ] )
[70] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::cr#1 ] )
to:gfx_init_plane_charset8::@7
gfx_init_plane_charset8::@7: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@6
[71] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 [ gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::ch#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::ch#1 ] )
[72] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 [ gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::ch#1 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::ch#1 ] )
to:gfx_init_plane_charset8::@8
gfx_init_plane_charset8::@8: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@7
[73] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ ] )
[74] call dtvSetCpuBankSegment1 param-assignment [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ ] )
to:gfx_init_plane_charset8::@return
gfx_init_plane_charset8::@return: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@8
[75] return [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49 [ ] )
to:@return
dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_charset8 gfx_init_plane_charset8::@8
[76] (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ← phi( gfx_init_plane_charset8/(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfx_init_plane_charset8::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 ) [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49::dtvSetCpuBankSegment1:52 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] main:2::gfx_init:7::gfx_init_plane_charset8:49::dtvSetCpuBankSegment1:74 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] )
[77] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#2 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49::dtvSetCpuBankSegment1:52 [ ] main:2::gfx_init:7::gfx_init_plane_charset8:49::dtvSetCpuBankSegment1:74 [ ] )
asm { .byte$32,$dd lda$ff .byte$32,$00 }
to:dtvSetCpuBankSegment1::@return
dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1
[79] return [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:49::dtvSetCpuBankSegment1:52 [ ] main:2::gfx_init:7::gfx_init_plane_charset8:49::dtvSetCpuBankSegment1:74 [ ] )
to:@return
gfx_init_screen0: scope:[gfx_init_screen0] from gfx_init
[80] phi() [ ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ ] )
to:gfx_init_screen0::@1
gfx_init_screen0::@1: scope:[gfx_init_screen0] from gfx_init_screen0 gfx_init_screen0::@3
[81] (byte*) gfx_init_screen0::ch#3 ← phi( gfx_init_screen0/(const byte*) SCREEN#0 gfx_init_screen0::@3/(byte*) gfx_init_screen0::ch#1 ) [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#3 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#3 ] )
[81] (byte) gfx_init_screen0::cy#4 ← phi( gfx_init_screen0/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@3/(byte) gfx_init_screen0::cy#1 ) [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#3 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#3 ] )
to:gfx_init_screen0::@2
gfx_init_screen0::@2: scope:[gfx_init_screen0] from gfx_init_screen0::@1 gfx_init_screen0::@2
[82] (byte*) gfx_init_screen0::ch#2 ← phi( gfx_init_screen0::@1/(byte*) gfx_init_screen0::ch#3 gfx_init_screen0::@2/(byte*) gfx_init_screen0::ch#1 ) [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] )
[82] (byte) gfx_init_screen0::cx#2 ← phi( gfx_init_screen0::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@2/(byte) gfx_init_screen0::cx#1 ) [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] )
[83] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] )
[84] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] )
[85] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] )
[86] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$3 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$3 ] )
[87] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] )
[88] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#1 gfx_init_screen0::cx#2 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#1 gfx_init_screen0::cx#2 ] )
[89] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#1 gfx_init_screen0::cx#1 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#1 gfx_init_screen0::cx#1 ] )
[90] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#1 gfx_init_screen0::cx#1 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#4 gfx_init_screen0::ch#1 gfx_init_screen0::cx#1 ] )
to:gfx_init_screen0::@3
gfx_init_screen0::@3: scope:[gfx_init_screen0] from gfx_init_screen0::@2
[91] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 [ gfx_init_screen0::cy#1 gfx_init_screen0::ch#1 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#1 gfx_init_screen0::ch#1 ] )
[92] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 [ gfx_init_screen0::cy#1 gfx_init_screen0::ch#1 ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ gfx_init_screen0::cy#1 gfx_init_screen0::ch#1 ] )
to:gfx_init_screen0::@return
gfx_init_screen0::@return: scope:[gfx_init_screen0] from gfx_init_screen0::@3
[93] return [ ] ( main:2::gfx_init:7::gfx_init_screen0:47 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,192 @@
(label) @5
(label) @begin
(label) @end
(byte*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
(byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
(byte*) CHARSET8
(const byte*) CHARSET8#0 CHARSET8 = ((byte*))(word/dword/signed dword) 32768
(byte*) CIA2_PORT_A
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
(byte*) CIA2_PORT_A_DDR
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
(byte) DTV_BADLINE_OFF
(const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32
(byte) DTV_CHUNKY
(const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) 64
(byte*) DTV_CONTROL
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308
(byte*) DTV_FEATURE
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311
(byte) DTV_FEATURE_ENABLE
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) DTV_HIGHCOLOR
(const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4
(byte) DTV_LINEAR
(const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1
(byte*) DTV_PALETTE
(const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760
(byte*) DTV_PLANEA_MODULO_HI
(const byte*) DTV_PLANEA_MODULO_HI#0 DTV_PLANEA_MODULO_HI = ((byte*))(word/dword/signed dword) 53305
(byte*) DTV_PLANEA_MODULO_LO
(const byte*) DTV_PLANEA_MODULO_LO#0 DTV_PLANEA_MODULO_LO = ((byte*))(word/dword/signed dword) 53304
(byte*) DTV_PLANEA_START_HI
(const byte*) DTV_PLANEA_START_HI#0 DTV_PLANEA_START_HI = ((byte*))(word/dword/signed dword) 53317
(byte*) DTV_PLANEA_START_LO
(const byte*) DTV_PLANEA_START_LO#0 DTV_PLANEA_START_LO = ((byte*))(word/dword/signed dword) 53306
(byte*) DTV_PLANEA_START_MI
(const byte*) DTV_PLANEA_START_MI#0 DTV_PLANEA_START_MI = ((byte*))(word/dword/signed dword) 53307
(byte*) DTV_PLANEA_STEP
(const byte*) DTV_PLANEA_STEP#0 DTV_PLANEA_STEP = ((byte*))(word/dword/signed dword) 53318
(byte*) DTV_PLANEB_MODULO_HI
(const byte*) DTV_PLANEB_MODULO_HI#0 DTV_PLANEB_MODULO_HI = ((byte*))(word/dword/signed dword) 53320
(byte*) DTV_PLANEB_MODULO_LO
(const byte*) DTV_PLANEB_MODULO_LO#0 DTV_PLANEB_MODULO_LO = ((byte*))(word/dword/signed dword) 53319
(byte*) DTV_PLANEB_START_HI
(const byte*) DTV_PLANEB_START_HI#0 DTV_PLANEB_START_HI = ((byte*))(word/dword/signed dword) 53323
(byte*) DTV_PLANEB_START_LO
(const byte*) DTV_PLANEB_START_LO#0 DTV_PLANEB_START_LO = ((byte*))(word/dword/signed dword) 53321
(byte*) DTV_PLANEB_START_MI
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322
(byte*) DTV_PLANEB_STEP
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324
(byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
(byte*) PROCPORT_DDR
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
(byte) PROCPORT_DDR_MEMORY_MASK
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
(byte) PROCPORT_RAM_CHARROM
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49
(byte) PROCPORT_RAM_IO
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 31744
(byte*) VIC_CONTROL
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265
(byte*) VIC_CONTROL2
(const byte*) VIC_CONTROL2#0 VIC_CONTROL2 = ((byte*))(word/dword/signed dword) 53270
(byte) VIC_CSEL
(const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte) VIC_DEN
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte) VIC_ECM
(const byte) VIC_ECM#0 VIC_ECM = (byte/signed byte/word/signed word/dword/signed dword) 64
(byte) VIC_MCM
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte*) VIC_MEMORY
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272
(byte) VIC_RSEL
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(byte*) dtvSetCpuBankSegment1::cpuBank
(const byte*) dtvSetCpuBankSegment1::cpuBank#0 cpuBank = ((byte*))(byte/word/signed word/dword/signed dword) 255
(byte) dtvSetCpuBankSegment1::cpuBankIdx
(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 reg byte a 2.0
(void()) gfx_init()
(label) gfx_init::@1
(label) gfx_init::@return
(void()) gfx_init_plane_charset8()
(byte~) gfx_init_plane_charset8::$6 reg byte a 2002.0
(label) gfx_init_plane_charset8::@1
(label) gfx_init_plane_charset8::@2
(label) gfx_init_plane_charset8::@3
(label) gfx_init_plane_charset8::@4
(label) gfx_init_plane_charset8::@5
(label) gfx_init_plane_charset8::@6
(label) gfx_init_plane_charset8::@7
(label) gfx_init_plane_charset8::@8
(label) gfx_init_plane_charset8::@9
(label) gfx_init_plane_charset8::@return
(byte) gfx_init_plane_charset8::bits
(byte) gfx_init_plane_charset8::bits#0 bits zp ZP_BYTE:6 101.0
(byte) gfx_init_plane_charset8::bits#1 bits zp ZP_BYTE:6 500.5
(byte) gfx_init_plane_charset8::bits#2 bits zp ZP_BYTE:6 443.42857142857144
(byte) gfx_init_plane_charset8::c
(byte) gfx_init_plane_charset8::c#2 reg byte a 2002.0
(byte~) gfx_init_plane_charset8::c#3 reg byte a 2002.0
(byte) gfx_init_plane_charset8::ch
(byte) gfx_init_plane_charset8::ch#1 ch zp ZP_BYTE:2 16.5
(byte) gfx_init_plane_charset8::ch#8 ch zp ZP_BYTE:2 1.2941176470588236
(byte*) gfx_init_plane_charset8::chargen
(byte*) gfx_init_plane_charset8::chargen#1 chargen zp ZP_WORD:3 13.3125
(byte*) gfx_init_plane_charset8::chargen#2 chargen zp ZP_WORD:3 157.0
(byte*) gfx_init_plane_charset8::chargen#3 chargen zp ZP_WORD:3 22.0
(byte) gfx_init_plane_charset8::col
(byte) gfx_init_plane_charset8::col#1 col zp ZP_BYTE:9 302.0
(byte) gfx_init_plane_charset8::col#2 col zp ZP_BYTE:9 388.0
(byte) gfx_init_plane_charset8::col#5 col zp ZP_BYTE:9 71.0
(byte) gfx_init_plane_charset8::col#6 col zp ZP_BYTE:9 22.0
(byte) gfx_init_plane_charset8::cp
(byte) gfx_init_plane_charset8::cp#1 reg byte x 1501.5
(byte) gfx_init_plane_charset8::cp#2 reg byte x 222.44444444444446
(byte) gfx_init_plane_charset8::cr
(byte) gfx_init_plane_charset8::cr#1 cr zp ZP_BYTE:5 151.5
(byte) gfx_init_plane_charset8::cr#6 cr zp ZP_BYTE:5 14.428571428571429
(byte*) gfx_init_plane_charset8::gfxa
(byte*) gfx_init_plane_charset8::gfxa#1 gfxa zp ZP_WORD:7 234.8888888888889
(byte*) gfx_init_plane_charset8::gfxa#2 gfxa zp ZP_WORD:7 517.3333333333334
(byte*) gfx_init_plane_charset8::gfxa#5 gfxa zp ZP_WORD:7 71.0
(byte*) gfx_init_plane_charset8::gfxa#6 gfxa zp ZP_WORD:7 22.0
(byte) gfx_init_plane_charset8::gfxbCpuBank
(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfxbCpuBank = ((byte))(const byte*) CHARSET8#0/(word/signed word/dword/signed dword) 16384
(void()) gfx_init_screen0()
(byte~) gfx_init_screen0::$0 reg byte a 202.0
(byte~) gfx_init_screen0::$1 $1 zp ZP_BYTE:5 101.0
(byte~) gfx_init_screen0::$2 reg byte a 202.0
(byte~) gfx_init_screen0::$3 reg byte a 202.0
(label) gfx_init_screen0::@1
(label) gfx_init_screen0::@2
(label) gfx_init_screen0::@3
(label) gfx_init_screen0::@return
(byte*) gfx_init_screen0::ch
(byte*) gfx_init_screen0::ch#1 ch zp ZP_WORD:3 42.599999999999994
(byte*) gfx_init_screen0::ch#2 ch zp ZP_WORD:3 52.33333333333333
(byte*) gfx_init_screen0::ch#3 ch zp ZP_WORD:3 22.0
(byte) gfx_init_screen0::cx
(byte) gfx_init_screen0::cx#1 reg byte x 151.5
(byte) gfx_init_screen0::cx#2 reg byte x 43.285714285714285
(byte) gfx_init_screen0::cy
(byte) gfx_init_screen0::cy#1 cy zp ZP_BYTE:2 16.5
(byte) gfx_init_screen0::cy#4 cy zp ZP_BYTE:2 12.299999999999999
(void()) main()
(byte~) main::$33 reg byte a 202.0
(byte~) main::$34 reg byte a 202.0
(byte~) main::$35 reg byte a 202.0
(label) main::@1
(label) main::@17
(label) main::@2
(label) main::@3
(label) main::@5
(label) main::@7
(label) main::@8
(label) main::@return
(byte) main::j
(byte) main::j#1 reg byte x 16.5
(byte) main::j#2 reg byte x 22.0
(byte) main::rst
(byte) main::rst#1 reg byte x 57.714285714285715
reg byte x [ main::j#2 main::j#1 ]
zp ZP_BYTE:2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
zp ZP_WORD:3 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
zp ZP_BYTE:5 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 gfx_init_screen0::$1 ]
zp ZP_BYTE:6 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
zp ZP_WORD:7 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
zp ZP_BYTE:9 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
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 ]
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
reg byte x [ main::rst#1 ]
reg byte a [ main::$33 ]
reg byte a [ main::$34 ]
reg byte a [ main::$35 ]
reg byte a [ gfx_init_plane_charset8::$6 ]
reg byte a [ gfx_init_screen0::$0 ]
reg byte a [ gfx_init_screen0::$2 ]
reg byte a [ gfx_init_screen0::$3 ]