mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-02 05:30:53 +00:00
Adding more C64DTV test programs
This commit is contained in:
parent
9cc3490f28
commit
c29d278146
@ -0,0 +1,3 @@
|
||||
lda #{c1}
|
||||
cmp {c2}
|
||||
beq {la1}
|
@ -0,0 +1,3 @@
|
||||
lda #{c1}
|
||||
cmp {c2}
|
||||
bne {la1}
|
@ -45,6 +45,21 @@ public class TestPrograms {
|
||||
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
|
||||
public void testC64DtvGfxExplorer() throws IOException, URISyntaxException {
|
||||
compileAndCompare("c64dtv-gfxexplorer");
|
||||
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -76,3 +76,109 @@ void dtvSetCpuBankSegment1(byte cpuBankIdx) {
|
||||
.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;
|
||||
|
@ -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
|
||||
}
|
@ -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
|
4741
src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.log
Normal file
4741
src/test/java/dk/camelot64/kickc/test/ref/c64dtv-8bppcharstretch.log
Normal file
File diff suppressed because it is too large
Load Diff
@ -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 ]
|
Loading…
Reference in New Issue
Block a user