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

Added ECM modes and MC std mode.

This commit is contained in:
jespergravgaard 2018-03-29 08:49:51 +02:00
parent 88313bbb81
commit 89e2900fdc
5 changed files with 10613 additions and 6369 deletions

View File

@ -75,10 +75,18 @@ void menu() {
mode_ecmchar();
return;
}
if(keyboard_key_pressed(KEY_3)!=0) {
mode_mcstdchar();
return;
}
if(keyboard_key_pressed(KEY_6)!=0) {
mode_hicolstdchar();
return;
}
if(keyboard_key_pressed(KEY_7)!=0) {
mode_hicolecmchar();
return;
}
if(keyboard_key_pressed(KEY_A)!=0) {
mode_sixsfred2();
return;
@ -210,6 +218,62 @@ void mode_ecmchar() {
}
}
// Multicolor Character Mode (LINEAR/HICOL/CHUNK/COLDIS/BMM/ECM = 0, MCM = 1)
// Resolution: 160x200 (320x200)
// Normal VIC Adressing:
// VicGfxData[16]: ( VicBank[1:0] & CharBase[2:0] & CharData[7:0] & RowCounter[2:0] )
// GfxData Pixel Shifter (1) if ColorData[3:3] = 0:
// - 0: 4bpp BgColor0[3:0]
// - 1: 4bpp ColorData[2:0]
// GfxData Pixel Shifter (2) if ColorData[3:3] = 1:
// - 00: 4bpp BgColor0[3:0]
// - 01: 4bpp BgColor1[3:0]
// - 10: 4bpp BgColor2[3:0]
// - 11: 4bpp ColorData[2:0]// Standard Character Mode (LINEAR/HICOL/CHUNK/COLDIS/ECM/MCM/BMM = 0)
void mode_mcstdchar() {
const byte* SCREEN = $8000;
const byte* CHARSET = $9000; // Charset ROM
const byte* COLORS = $8400;
// DTV Graphics Bank
*DTV_GRAPHICS_VIC_BANK = (byte)((dword)CHARSET/$10000);
// DTV Color Bank
*DTV_COLOR_BANK_LO = <((word)(COLORS/$400));
*DTV_COLOR_BANK_HI = >((word)(COLORS/$400));
// DTV Graphics Mode
*DTV_CONTROL = 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)CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|3;
*VIC_CONTROL2 = VIC_CSEL|VIC_MCM;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)CHARSET&$3fff)/$400));
// DTV Palette - default
for(byte i : 0..$f) {
DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i];
}
// Screen colors
*BORDERCOL = 0;
*BGCOL1 = BLACK;
*BGCOL2 = GREEN;
*BGCOL3 = BLUE;
// Char Colors and screen chars
byte* col=COLORS;
byte* ch=SCREEN;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*col++ = (cx+cy)&$f;
*ch++ = (cy&$f)<<4|(cx&$f);
}
}
// Wait for keypress
while(true) {
if(keyboard_key_pressed(KEY_SPACE)!=0) {
return;
}
}
}
// High Color Standard Character Mode (LINEAR/CHUNK/COLDIS/ECM/MCM/BMM = 0, HICOL = 1)
// Resolution: 320x200
@ -262,7 +326,62 @@ void mode_hicolstdchar() {
}
}
// High Color Extended Background Color Character Mode (LINEAR/CHUNK/COLDIS/MCM/BMM = 0, ECM/HICOL = 1)
// Resolution: 320x200
// Normal VIC Adressing:
// VicGfxData[16]: ( VicBank[1:0] & CharBase[2:0] & "00" & CharData[5:0] & RowCounter[2:0] )
// GfxData Pixel Shifter (1)
// - 0: 8bpp Background Color
// - CharData[7:6] 00: 8bpp BgColor0[7:0]
// - CharData[7:6] 01: 8bpp BgColor1[7:0]
// - CharData[7:6] 10: 8bpp BgColor2[7:0]
// - CharData[7:6] 11: 8bpp BgColor3[7:0]
// - 1: 8bpp ColorData[7:0]
void mode_hicolecmchar() {
const byte* ECMCHAR_SCREEN = $8000;
const byte* ECMCHAR_CHARSET = $9000; // Charset ROM
const byte* ECMCHAR_COLORS = $8400;
// DTV Graphics Bank
*DTV_GRAPHICS_VIC_BANK = (byte)((dword)ECMCHAR_CHARSET/$10000);
// DTV Color Bank
*DTV_COLOR_BANK_LO = <((word)(ECMCHAR_COLORS/$400));
*DTV_COLOR_BANK_HI = >((word)(ECMCHAR_COLORS/$400));
// DTV Graphics Mode
*DTV_CONTROL = DTV_CONTROL_HIGHCOLOR_ON;
// VIC Graphics Bank
*CIA2_PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
*CIA2_PORT_A = %00000011 ^ (byte)((word)ECMCHAR_CHARSET/$4000); // Set VIC Bank
// VIC Graphics Mode
*VIC_CONTROL = VIC_DEN|VIC_RSEL|VIC_ECM|3;
*VIC_CONTROL2 = VIC_CSEL;
// VIC Memory Pointers
*VIC_MEMORY = (byte)((((word)ECMCHAR_SCREEN&$3fff)/$40)|(((word)ECMCHAR_CHARSET&$3fff)/$400));
// DTV Palette - Grey Tones
for(byte i : 0..$f) {
DTV_PALETTE[i] = i;
}
// Screen colors
*BORDERCOL = 0;
*BGCOL1 = $50;
*BGCOL2 = $54;
*BGCOL3 = $58;
*BGCOL4 = $5c;
// Char Colors and screen chars
byte* col=ECMCHAR_COLORS;
byte* ch=ECMCHAR_SCREEN;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*col++ = (cy&$f)<<4|(cx&$f);
*ch++ = (cy&$f)<<4|(cx&$f);
}
}
// Wait for keypress
while(true) {
if(keyboard_key_pressed(KEY_SPACE)!=0) {
return;
}
}
}
// Two Plane Bitmap - generated from the two DTV linear graphics plane counters
// Two Plane Bitmap Mode (CHUNK/COLDIS/MCM = 0, ECM/BMM/HICOL/LINEAR = 1)

View File

@ -22,6 +22,9 @@
.label CIA1_PORT_B = $dc01
.label CIA2_PORT_A = $dd00
.label CIA2_PORT_A_DDR = $dd02
.const BLACK = 0
.const GREEN = 5
.const BLUE = 6
.const LIGHT_GREEN = $d
.label DTV_FEATURE = $d03f
.const DTV_FEATURE_ENABLE = 1
@ -47,11 +50,13 @@
.label DTV_COLOR_BANK_HI = $d037
.const DTV_COLOR_BANK_DEFAULT = $1d800
.label DTV_GRAPHICS_VIC_BANK = $d03d
.const KEY_3 = 8
.const KEY_A = $a
.const KEY_E = $e
.const KEY_D = $12
.const KEY_6 = $13
.const KEY_C = $14
.const KEY_7 = $18
.const KEY_B = $1c
.const KEY_1 = $38
.const KEY_2 = $3b
@ -137,45 +142,61 @@ menu: {
jsr mode_ecmchar
jmp breturn
b7:
ldx #KEY_6
ldx #KEY_3
jsr keyboard_key_pressed
cmp #0
beq b8
jsr mode_hicolstdchar
jsr mode_mcstdchar
jmp breturn
b8:
ldx #KEY_A
ldx #KEY_6
jsr keyboard_key_pressed
cmp #0
beq b9
jsr mode_sixsfred2
jsr mode_hicolstdchar
jmp breturn
b9:
ldx #KEY_B
ldx #KEY_7
jsr keyboard_key_pressed
cmp #0
beq b10
jsr mode_twoplanebitmap
jsr mode_hicolecmchar
jmp breturn
b10:
ldx #KEY_C
ldx #KEY_A
jsr keyboard_key_pressed
cmp #0
beq b11
jsr mode_sixsfred
jsr mode_sixsfred2
jmp breturn
b11:
ldx #KEY_D
ldx #KEY_B
jsr keyboard_key_pressed
cmp #0
beq b12
jsr mode_8bpppixelcell
jsr mode_twoplanebitmap
jmp breturn
b12:
ldx #KEY_C
jsr keyboard_key_pressed
cmp #0
beq b13
jsr mode_sixsfred
jmp breturn
b13:
ldx #KEY_D
jsr keyboard_key_pressed
cmp #0
beq b14
jsr mode_8bpppixelcell
jmp breturn
b14:
ldx #KEY_E
jsr keyboard_key_pressed
cmp #0
beq b4
bne !b4+
jmp b4
!b4:
jsr mode_8bppchunkybmm
jmp breturn
}
@ -890,6 +911,112 @@ mode_sixsfred2: {
jmp breturn
row_bitmask: .byte 0, $55, $aa, $ff
}
mode_hicolecmchar: {
.label ECMCHAR_SCREEN = $8000
.label ECMCHAR_CHARSET = $9000
.label ECMCHAR_COLORS = $8400
.label _26 = 7
.label _30 = 7
.label col = 2
.label ch = 5
.label cy = 4
lda #($ffffffff&ECMCHAR_CHARSET)/$10000
sta DTV_GRAPHICS_VIC_BANK
lda #ECMCHAR_COLORS/$400
sta DTV_COLOR_BANK_LO
lda #0
sta DTV_COLOR_BANK_HI
lda #DTV_CONTROL_HIGHCOLOR_ON
sta DTV_CONTROL
lda #3
sta CIA2_PORT_A_DDR
lda #3^ECMCHAR_CHARSET/$4000
sta CIA2_PORT_A
lda #VIC_DEN|VIC_RSEL|VIC_ECM|3
sta VIC_CONTROL
lda #VIC_CSEL
sta VIC_CONTROL2
lda #(ECMCHAR_SCREEN&$3fff)/$40|(ECMCHAR_CHARSET&$3fff)/$400
sta VIC_MEMORY
ldx #0
b1:
txa
sta DTV_PALETTE,x
inx
cpx #$10
bne b1
lda #0
sta BORDERCOL
lda #$50
sta BGCOL1
lda #$54
sta BGCOL2
lda #$58
sta BGCOL3
lda #$5c
sta BGCOL4
lda #<ECMCHAR_SCREEN
sta ch
lda #>ECMCHAR_SCREEN
sta ch+1
lda #<ECMCHAR_COLORS
sta col
lda #>ECMCHAR_COLORS
sta col+1
lda #0
sta cy
b2:
ldx #0
b3:
lda #$f
and cy
asl
asl
asl
asl
sta _26
txa
and #$f
ora _26
ldy #0
sta (col),y
inc col
bne !+
inc col+1
!:
lda #$f
and cy
asl
asl
asl
asl
sta _30
txa
and #$f
ora _30
ldy #0
sta (ch),y
inc ch
bne !+
inc ch+1
!:
inx
cpx #$28
bne b3
inc cy
lda cy
cmp #$19
bne b2
jmp b5
breturn:
rts
b5:
ldx #KEY_SPACE
jsr keyboard_key_pressed
cmp #0
beq b5
jmp breturn
}
mode_hicolstdchar: {
.label HICOLSTDCHAR_SCREEN = $8000
.label HICOLSTDCHAR_CHARSET = $9000
@ -978,6 +1105,102 @@ mode_hicolstdchar: {
beq b5
jmp breturn
}
mode_mcstdchar: {
.label SCREEN = $8000
.label CHARSET = $9000
.label COLORS = $8400
.label _28 = 7
.label col = 2
.label ch = 5
.label cy = 4
lda #($ffffffff&CHARSET)/$10000
sta DTV_GRAPHICS_VIC_BANK
lda #COLORS/$400
sta DTV_COLOR_BANK_LO
lda #0
sta DTV_COLOR_BANK_HI
sta DTV_CONTROL
lda #3
sta CIA2_PORT_A_DDR
lda #3^CHARSET/$4000
sta CIA2_PORT_A
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
lda #VIC_CSEL|VIC_MCM
sta VIC_CONTROL2
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
sta VIC_MEMORY
ldx #0
b1:
lda DTV_PALETTE_DEFAULT,x
sta DTV_PALETTE,x
inx
cpx #$10
bne b1
lda #0
sta BORDERCOL
lda #BLACK
sta BGCOL1
lda #GREEN
sta BGCOL2
lda #BLUE
sta BGCOL3
lda #<SCREEN
sta ch
lda #>SCREEN
sta ch+1
lda #<COLORS
sta col
lda #>COLORS
sta col+1
lda #0
sta cy
b2:
ldx #0
b3:
txa
clc
adc cy
and #$f
ldy #0
sta (col),y
inc col
bne !+
inc col+1
!:
lda #$f
and cy
asl
asl
asl
asl
sta _28
txa
and #$f
ora _28
ldy #0
sta (ch),y
inc ch
bne !+
inc ch+1
!:
inx
cpx #$28
bne b3
inc cy
lda cy
cmp #$19
bne b2
jmp b5
breturn:
rts
b5:
ldx #KEY_SPACE
jsr keyboard_key_pressed
cmp #0
beq b5
jmp breturn
}
mode_ecmchar: {
.label ECMCHAR_SCREEN = $8000
.label ECMCHAR_CHARSET = $9000

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @29
(label) @31
(label) @begin
(label) @end
(byte*) BGCOL
@ -11,6 +11,10 @@
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
(byte*) BGCOL4
(const byte*) BGCOL4#0 BGCOL4 = ((byte*))(word/dword/signed dword) 53284
(byte) BLACK
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) BLUE
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
(byte*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
(byte*) CIA1_PORT_A
@ -73,12 +77,18 @@
(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) GREEN
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) KEY_1
(const byte) KEY_1#0 KEY_1 = (byte/signed byte/word/signed word/dword/signed dword) 56
(byte) KEY_2
(const byte) KEY_2#0 KEY_2 = (byte/signed byte/word/signed word/dword/signed dword) 59
(byte) KEY_3
(const byte) KEY_3#0 KEY_3 = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte) KEY_6
(const byte) KEY_6#0 KEY_6 = (byte/signed byte/word/signed word/dword/signed dword) 19
(byte) KEY_7
(const byte) KEY_7#0 KEY_7 = (byte/signed byte/word/signed word/dword/signed dword) 24
(byte) KEY_A
(const byte) KEY_A#0 KEY_A = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) KEY_B
@ -129,9 +139,9 @@
(byte) keyboard_key_pressed::colidx
(byte) keyboard_key_pressed::colidx#0 reg byte y 0.6666666666666666
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::key#16 reg byte x 2.0
(byte) keyboard_key_pressed::key#20 reg byte x 2.0
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::return#0 reg byte a 89.88888888888891
(byte) keyboard_key_pressed::return#0 reg byte a 91.90909090909093
(byte) keyboard_key_pressed::return#10 reg byte a 202.0
(byte) keyboard_key_pressed::return#11 reg byte a 202.0
(byte) keyboard_key_pressed::return#12 reg byte a 202.0
@ -140,14 +150,18 @@
(byte) keyboard_key_pressed::return#15 reg byte a 202.0
(byte) keyboard_key_pressed::return#16 reg byte a 202.0
(byte) keyboard_key_pressed::return#17 reg byte a 202.0
(byte) keyboard_key_pressed::return#18 reg byte a 202.0
(byte) keyboard_key_pressed::return#19 reg byte a 202.0
(byte) keyboard_key_pressed::return#2 reg byte a 202.0
(byte) keyboard_key_pressed::return#20 reg byte a 202.0
(byte) keyboard_key_pressed::return#21 reg byte a 202.0
(byte) keyboard_key_pressed::return#22 reg byte a 202.0
(byte) keyboard_key_pressed::return#23 reg byte a 202.0
(byte) keyboard_key_pressed::return#24 reg byte a 202.0
(byte) keyboard_key_pressed::return#25 reg byte a 202.0
(byte) keyboard_key_pressed::return#26 reg byte a 202.0
(byte) keyboard_key_pressed::return#27 reg byte a 202.0
(byte) keyboard_key_pressed::return#28 reg byte a 202.0
(byte) keyboard_key_pressed::return#29 reg byte a 202.0
(byte) keyboard_key_pressed::return#30 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
(byte[]) keyboard_matrix_col_bitmask
@ -175,12 +189,15 @@
(byte~) menu::$49 reg byte a 202.0
(byte~) menu::$53 reg byte a 202.0
(byte~) menu::$57 reg byte a 202.0
(byte~) menu::$61 reg byte a 202.0
(byte~) menu::$65 reg byte a 202.0
(label) menu::@1
(label) menu::@10
(label) menu::@11
(label) menu::@12
(label) menu::@15
(label) menu::@18
(label) menu::@13
(label) menu::@14
(label) menu::@17
(label) menu::@2
(label) menu::@20
(label) menu::@22
@ -190,18 +207,23 @@
(label) menu::@3
(label) menu::@30
(label) menu::@32
(label) menu::@35
(label) menu::@34
(label) menu::@36
(label) menu::@38
(label) menu::@39
(label) menu::@4
(label) menu::@41
(label) menu::@43
(label) menu::@42
(label) menu::@44
(label) menu::@45
(label) menu::@47
(label) menu::@49
(label) menu::@51
(label) menu::@53
(label) menu::@55
(label) menu::@57
(label) menu::@59
(label) menu::@6
(label) menu::@61
(label) menu::@7
(label) menu::@8
(label) menu::@9
@ -367,6 +389,48 @@
(byte) mode_ecmchar::i
(byte) mode_ecmchar::i#1 reg byte x 151.5
(byte) mode_ecmchar::i#2 reg byte x 202.0
(void()) mode_hicolecmchar()
(byte~) mode_hicolecmchar::$25 reg byte a 2002.0
(byte~) mode_hicolecmchar::$26 $26 zp ZP_BYTE:7 1001.0
(byte~) mode_hicolecmchar::$27 reg byte a 2002.0
(byte~) mode_hicolecmchar::$28 reg byte a 2002.0
(byte~) mode_hicolecmchar::$29 reg byte a 2002.0
(byte~) mode_hicolecmchar::$30 $30 zp ZP_BYTE:7 1001.0
(byte~) mode_hicolecmchar::$31 reg byte a 2002.0
(byte~) mode_hicolecmchar::$32 reg byte a 2002.0
(byte~) mode_hicolecmchar::$35 reg byte a 202.0
(label) mode_hicolecmchar::@1
(label) mode_hicolecmchar::@16
(label) mode_hicolecmchar::@2
(label) mode_hicolecmchar::@3
(label) mode_hicolecmchar::@4
(label) mode_hicolecmchar::@5
(label) mode_hicolecmchar::@8
(label) mode_hicolecmchar::@9
(label) mode_hicolecmchar::@return
(byte*) mode_hicolecmchar::ECMCHAR_CHARSET
(const byte*) mode_hicolecmchar::ECMCHAR_CHARSET#0 ECMCHAR_CHARSET = ((byte*))(word/dword/signed dword) 36864
(byte*) mode_hicolecmchar::ECMCHAR_COLORS
(const byte*) mode_hicolecmchar::ECMCHAR_COLORS#0 ECMCHAR_COLORS = ((byte*))(word/dword/signed dword) 33792
(byte*) mode_hicolecmchar::ECMCHAR_SCREEN
(const byte*) mode_hicolecmchar::ECMCHAR_SCREEN#0 ECMCHAR_SCREEN = ((byte*))(word/dword/signed dword) 32768
(byte*) mode_hicolecmchar::ch
(byte*) mode_hicolecmchar::ch#1 ch zp ZP_WORD:5 420.59999999999997
(byte*) mode_hicolecmchar::ch#2 ch zp ZP_WORD:5 258.6666666666667
(byte*) mode_hicolecmchar::ch#3 ch zp ZP_WORD:5 202.0
(byte*) mode_hicolecmchar::col
(byte*) mode_hicolecmchar::col#1 col zp ZP_WORD:2 191.1818181818182
(byte*) mode_hicolecmchar::col#2 col zp ZP_WORD:2 517.3333333333334
(byte*) mode_hicolecmchar::col#3 col zp ZP_WORD:2 202.0
(byte) mode_hicolecmchar::cx
(byte) mode_hicolecmchar::cx#1 reg byte x 1501.5
(byte) mode_hicolecmchar::cx#2 reg byte x 308.0
(byte) mode_hicolecmchar::cy
(byte) mode_hicolecmchar::cy#1 cy zp ZP_BYTE:4 151.5
(byte) mode_hicolecmchar::cy#4 cy zp ZP_BYTE:4 137.75
(byte) mode_hicolecmchar::i
(byte) mode_hicolecmchar::i#1 reg byte x 151.5
(byte) mode_hicolecmchar::i#2 reg byte x 202.0
(void()) mode_hicolstdchar()
(byte~) mode_hicolstdchar::$24 reg byte a 2002.0
(byte~) mode_hicolstdchar::$25 $25 zp ZP_BYTE:7 1001.0
@ -406,6 +470,46 @@
(byte) mode_hicolstdchar::i#2 reg byte x 202.0
(byte) mode_hicolstdchar::v
(byte) mode_hicolstdchar::v#0 reg byte a 1001.0
(void()) mode_mcstdchar()
(byte~) mode_mcstdchar::$25 reg byte a 2002.0
(byte~) mode_mcstdchar::$26 reg byte a 2002.0
(byte~) mode_mcstdchar::$27 reg byte a 2002.0
(byte~) mode_mcstdchar::$28 $28 zp ZP_BYTE:7 1001.0
(byte~) mode_mcstdchar::$29 reg byte a 2002.0
(byte~) mode_mcstdchar::$30 reg byte a 2002.0
(byte~) mode_mcstdchar::$33 reg byte a 202.0
(label) mode_mcstdchar::@1
(label) mode_mcstdchar::@16
(label) mode_mcstdchar::@2
(label) mode_mcstdchar::@3
(label) mode_mcstdchar::@4
(label) mode_mcstdchar::@5
(label) mode_mcstdchar::@8
(label) mode_mcstdchar::@9
(label) mode_mcstdchar::@return
(byte*) mode_mcstdchar::CHARSET
(const byte*) mode_mcstdchar::CHARSET#0 CHARSET = ((byte*))(word/dword/signed dword) 36864
(byte*) mode_mcstdchar::COLORS
(const byte*) mode_mcstdchar::COLORS#0 COLORS = ((byte*))(word/dword/signed dword) 33792
(byte*) mode_mcstdchar::SCREEN
(const byte*) mode_mcstdchar::SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 32768
(byte*) mode_mcstdchar::ch
(byte*) mode_mcstdchar::ch#1 ch zp ZP_WORD:5 420.59999999999997
(byte*) mode_mcstdchar::ch#2 ch zp ZP_WORD:5 310.4
(byte*) mode_mcstdchar::ch#3 ch zp ZP_WORD:5 202.0
(byte*) mode_mcstdchar::col
(byte*) mode_mcstdchar::col#1 col zp ZP_WORD:2 191.1818181818182
(byte*) mode_mcstdchar::col#2 col zp ZP_WORD:2 776.0
(byte*) mode_mcstdchar::col#3 col zp ZP_WORD:2 202.0
(byte) mode_mcstdchar::cx
(byte) mode_mcstdchar::cx#1 reg byte x 1501.5
(byte) mode_mcstdchar::cx#2 reg byte x 364.0
(byte) mode_mcstdchar::cy
(byte) mode_mcstdchar::cy#1 cy zp ZP_BYTE:4 151.5
(byte) mode_mcstdchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
(byte) mode_mcstdchar::i
(byte) mode_mcstdchar::i#1 reg byte x 151.5
(byte) mode_mcstdchar::i#2 reg byte x 202.0
(void()) mode_sixsfred()
(byte~) mode_sixsfred::$15 reg byte a 2002.0
(byte~) mode_sixsfred::$16 reg byte a 2002.0
@ -645,7 +749,7 @@
(byte*) print_char_cursor#17 print_char_cursor zp ZP_WORD:5 821.0
(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:5 101.0
(byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:5 572.0
(byte*~) print_char_cursor#83 print_char_cursor zp ZP_WORD:5 202.0
(byte*~) print_char_cursor#91 print_char_cursor zp ZP_WORD:5 202.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -678,16 +782,16 @@
(byte*) print_str_lines::str#3 str zp ZP_WORD:2 1552.0
reg byte x [ menu::i#2 menu::i#1 ]
zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_mcstdchar::col#2 mode_mcstdchar::col#3 mode_mcstdchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 ]
reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ]
zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 ]
zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_mcstdchar::cy#4 mode_mcstdchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 ]
reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ]
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#83 print_char_cursor#32 print_char_cursor#1 ]
reg byte x [ keyboard_key_pressed::key#16 ]
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcstdchar::ch#2 mode_mcstdchar::ch#3 mode_mcstdchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#91 print_char_cursor#32 print_char_cursor#1 ]
reg byte x [ keyboard_key_pressed::key#20 ]
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
reg byte x [ mode_8bpppixelcell::i#2 mode_8bpppixelcell::i#1 ]
reg byte x [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ]
zp ZP_BYTE:7 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 mode_8bpppixelcell::$12 mode_twoplanebitmap::$15 mode_sixsfred2::$15 mode_hicolstdchar::$25 mode_ecmchar::$28 mode_stdchar::$27 ]
zp ZP_BYTE:7 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 mode_8bpppixelcell::$12 mode_twoplanebitmap::$15 mode_sixsfred2::$15 mode_hicolecmchar::$26 mode_hicolecmchar::$30 mode_hicolstdchar::$25 mode_mcstdchar::$28 mode_ecmchar::$28 mode_stdchar::$27 ]
zp ZP_BYTE:8 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#0 mode_8bpppixelcell::bits#1 ]
zp ZP_BYTE:9 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 ]
reg byte x [ mode_8bpppixelcell::cp#2 mode_8bpppixelcell::cp#1 ]
@ -704,31 +808,39 @@ reg byte x [ mode_sixsfred2::i#2 mode_sixsfred2::i#1 ]
reg byte x [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ]
reg byte x [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ]
reg byte x [ mode_sixsfred2::bx#2 mode_sixsfred2::bx#1 ]
reg byte x [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ]
reg byte x [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ]
reg byte x [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ]
reg byte x [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ]
reg byte x [ mode_mcstdchar::i#2 mode_mcstdchar::i#1 ]
reg byte x [ mode_mcstdchar::cx#2 mode_mcstdchar::cx#1 ]
reg byte x [ mode_ecmchar::i#2 mode_ecmchar::i#1 ]
reg byte x [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ]
reg byte x [ mode_stdchar::i#2 mode_stdchar::i#1 ]
reg byte x [ mode_stdchar::cx#2 mode_stdchar::cx#1 ]
zp ZP_WORD:10 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 mode_8bppchunkybmm::$20 ]
reg byte a [ keyboard_key_pressed::return#19 ]
reg byte a [ keyboard_key_pressed::return#2 ]
reg byte a [ menu::$29 ]
reg byte a [ keyboard_key_pressed::return#20 ]
reg byte a [ menu::$33 ]
reg byte a [ keyboard_key_pressed::return#21 ]
reg byte a [ menu::$37 ]
reg byte a [ keyboard_key_pressed::return#22 ]
reg byte a [ menu::$41 ]
reg byte a [ keyboard_key_pressed::return#23 ]
reg byte a [ menu::$45 ]
reg byte a [ keyboard_key_pressed::return#24 ]
reg byte a [ menu::$49 ]
reg byte a [ menu::$33 ]
reg byte a [ keyboard_key_pressed::return#25 ]
reg byte a [ menu::$53 ]
reg byte a [ menu::$37 ]
reg byte a [ keyboard_key_pressed::return#26 ]
reg byte a [ menu::$41 ]
reg byte a [ keyboard_key_pressed::return#27 ]
reg byte a [ menu::$45 ]
reg byte a [ keyboard_key_pressed::return#28 ]
reg byte a [ menu::$49 ]
reg byte a [ keyboard_key_pressed::return#29 ]
reg byte a [ menu::$53 ]
reg byte a [ keyboard_key_pressed::return#30 ]
reg byte a [ menu::$57 ]
reg byte a [ keyboard_key_pressed::return#10 ]
reg byte a [ menu::$61 ]
reg byte a [ keyboard_key_pressed::return#11 ]
reg byte a [ menu::$65 ]
reg byte a [ mode_8bppchunkybmm::c#0 ]
reg byte a [ keyboard_key_pressed::return#17 ]
reg byte a [ keyboard_key_pressed::return#21 ]
reg byte a [ mode_8bppchunkybmm::$27 ]
reg byte y [ keyboard_key_pressed::colidx#0 ]
reg byte a [ keyboard_key_pressed::rowidx#0 ]
@ -741,44 +853,59 @@ reg byte a [ mode_8bpppixelcell::$11 ]
reg byte a [ mode_8bpppixelcell::$13 ]
reg byte a [ mode_8bpppixelcell::$14 ]
reg byte a [ mode_8bpppixelcell::$17 ]
reg byte a [ keyboard_key_pressed::return#16 ]
reg byte a [ keyboard_key_pressed::return#20 ]
reg byte a [ mode_8bpppixelcell::$24 ]
reg byte a [ mode_sixsfred::$15 ]
reg byte a [ mode_sixsfred::$16 ]
reg byte a [ mode_sixsfred::$19 ]
reg byte a [ mode_sixsfred::row#0 ]
reg byte a [ keyboard_key_pressed::return#14 ]
reg byte a [ keyboard_key_pressed::return#18 ]
reg byte a [ mode_sixsfred::$25 ]
reg byte a [ mode_twoplanebitmap::$14 ]
reg byte a [ mode_twoplanebitmap::$16 ]
reg byte a [ mode_twoplanebitmap::$17 ]
reg byte a [ mode_twoplanebitmap::$20 ]
reg byte a [ keyboard_key_pressed::return#13 ]
reg byte a [ keyboard_key_pressed::return#17 ]
reg byte a [ mode_twoplanebitmap::$27 ]
reg byte a [ mode_sixsfred2::$14 ]
reg byte a [ mode_sixsfred2::$16 ]
reg byte a [ mode_sixsfred2::$17 ]
reg byte a [ mode_sixsfred2::$20 ]
reg byte a [ mode_sixsfred2::row#0 ]
reg byte a [ keyboard_key_pressed::return#15 ]
reg byte a [ keyboard_key_pressed::return#19 ]
reg byte a [ mode_sixsfred2::$26 ]
reg byte a [ mode_hicolecmchar::$25 ]
reg byte a [ mode_hicolecmchar::$27 ]
reg byte a [ mode_hicolecmchar::$28 ]
reg byte a [ mode_hicolecmchar::$29 ]
reg byte a [ mode_hicolecmchar::$31 ]
reg byte a [ mode_hicolecmchar::$32 ]
reg byte a [ keyboard_key_pressed::return#16 ]
reg byte a [ mode_hicolecmchar::$35 ]
reg byte a [ mode_hicolstdchar::$24 ]
reg byte a [ mode_hicolstdchar::$26 ]
reg byte a [ mode_hicolstdchar::v#0 ]
reg byte a [ keyboard_key_pressed::return#12 ]
reg byte a [ keyboard_key_pressed::return#15 ]
reg byte a [ mode_hicolstdchar::$30 ]
reg byte a [ mode_mcstdchar::$25 ]
reg byte a [ mode_mcstdchar::$26 ]
reg byte a [ mode_mcstdchar::$27 ]
reg byte a [ mode_mcstdchar::$29 ]
reg byte a [ mode_mcstdchar::$30 ]
reg byte a [ keyboard_key_pressed::return#14 ]
reg byte a [ mode_mcstdchar::$33 ]
reg byte a [ mode_ecmchar::$25 ]
reg byte a [ mode_ecmchar::$26 ]
reg byte a [ mode_ecmchar::$27 ]
reg byte a [ mode_ecmchar::$29 ]
reg byte a [ mode_ecmchar::$30 ]
reg byte a [ keyboard_key_pressed::return#11 ]
reg byte a [ keyboard_key_pressed::return#13 ]
reg byte a [ mode_ecmchar::$33 ]
reg byte a [ mode_stdchar::$24 ]
reg byte a [ mode_stdchar::$25 ]
reg byte a [ mode_stdchar::$26 ]
reg byte a [ mode_stdchar::$28 ]
reg byte a [ mode_stdchar::$29 ]
reg byte a [ keyboard_key_pressed::return#10 ]
reg byte a [ keyboard_key_pressed::return#12 ]
reg byte a [ mode_stdchar::$32 ]
reg byte a [ print_str_lines::ch#0 ]