1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Form and GFX are now two separate modes

This commit is contained in:
jespergravgaard 2018-04-07 16:01:35 +02:00
parent 2aef56bb2c
commit 72e39f7cc4
7 changed files with 9888 additions and 7208 deletions

View File

@ -46,13 +46,24 @@ public class TestPrograms {
}
@Test
public void testLoopProblem2() throws IOException, URISyntaxException {
compileAndCompare("loop-problem2");
public void testC64DtvGfxExplorer() throws IOException, URISyntaxException {
compileAndCompare("c64dtv-gfxexplorer");
}
@Test
public void testC64DtvGfxExplorer() throws IOException, URISyntaxException {
compileAndCompare("c64dtv-gfxexplorer");
public void testVarForwardProblem() throws IOException, URISyntaxException {
try {
compileAndCompare("var-forward-problem");
} catch(CompileError e) {
// ignore & return
return;
}
fail("Expected compile error.");
}
@Test
public void testLoopProblem2() throws IOException, URISyntaxException {
compileAndCompare("loop-problem2");
}
@Test

View File

@ -10,17 +10,16 @@ void main() {
gfx_init();
form_init();
while(true) {
// Render form at the bottom 9 lines of the screen
while(*RASTER != $30+8*16) {}
// Let the user change the GFX configuration
form_mode();
// Allow user to control the graphics through the form
while(*RASTER!=$ff) {}
form_control();
// Render graphics mode at the top 16 lines of the screen
// Show the GFX configuration
gfx_mode();
}
}
// Standard charset screen
const byte* VIC_SCREEN_STDCHAR = $8400;
// 8BPP Chunky Bitmap (contains 8bpp pixels)
const dword PLANE_8BPP_CHUNKY = $20000;
@ -28,8 +27,6 @@ const dword PLANE_8BPP_CHUNKY = $20000;
const byte* FORM_SCREEN = $8000;
// Charset used for the FORM
const byte* FORM_CHARSET = $9800; // Charset ROM
// Offset of the FORM from the top of the screen
const word FORM_OFFSET = 16*40;
byte[] FORM_COLS =
@ -104,7 +101,7 @@ const byte* form_vic_bg3_lo = form_fields_val+34;
// Change graphics mode to show the selected graphics mode
void gfx_mode() {
// Show the GFX configuration
// DTV Graphics Mode
byte dtv_control = 0;
if(*form_ctrl_line!=0) {
@ -162,7 +159,7 @@ void gfx_mode() {
*DTV_PLANEB_MODULO_LO = *form_b_mod_hi<<4|*form_b_mod_lo;
*DTV_PLANEB_MODULO_HI = 0;
// Border colors
// Bakground colors
*BGCOL1 = *form_vic_bg0_hi<<4|*form_vic_bg0_lo;
*BGCOL2 = *form_vic_bg1_hi<<4|*form_vic_bg1_lo;
*BGCOL3 = *form_vic_bg2_hi<<4|*form_vic_bg2_lo;
@ -172,14 +169,37 @@ void gfx_mode() {
for(byte i : 0..$f) {
DTV_PALETTE[i] = i;
}
// Wait for the user to press space
while(true) {
while(*RASTER!=$ff) {}
keyboard_event_scan();
byte keyboard_event = keyboard_event_get();
if(keyboard_event==KEY_SPACE) {
// If space pressed - change to form mode
return;
}
}
}
// Initialize the different graphics in the memory
void gfx_init() {
gfx_init_screen_stdchar();
gfx_init_plane_8bppchunky();
}
// Initialize std char screen
void gfx_init_screen_stdchar() {
byte* ch=VIC_SCREEN_STDCHAR;
for(byte cy: 0..24 ) {
for(byte cx: 0..39) {
*ch++ = (cy&$f)<<4|(cx&$f);
}
}
}
// Initialize 8BPP Chunky Bitmap (contains 8bpp pixels)
void gfx_init_plane_8bppchunky() {
// 320x200 8bpp pixels for Plane
@ -203,18 +223,22 @@ void gfx_init_plane_8bppchunky() {
// Initialize the form colors, screen & form
void form_init() {
// Form Colors
print_set_screen(COLS+FORM_OFFSET);
print_set_screen(COLS);
print_cls();
print_str_lines(FORM_COLS);
// Form Text
print_set_screen(FORM_SCREEN+FORM_OFFSET);
print_set_screen(FORM_SCREEN);
print_cls();
print_str_lines(FORM_TEXT);
// Form Fields
form_set_screen(FORM_SCREEN+FORM_OFFSET);
form_set_screen(FORM_SCREEN);
form_render_values();
}
// Change graphics mode to show the form
// Show the form - and let the user change values
void form_mode() {
// Show the form
// DTV Graphics Bank
*DTV_GRAPHICS_VIC_BANK = (byte)((dword)FORM_CHARSET/$10000);
// DTV Color Bank
@ -235,8 +259,17 @@ void form_mode() {
DTV_PALETTE[i] = DTV_PALETTE_DEFAULT[i];
}
// Screen colors
*BORDERCOL = 0;
*BGCOL = 0;
// Let the user change values in the form
while(true) {
while(*RASTER!=$ff) {}
if(form_control()!=0) {
// Space pressed - change to GFX mode
return;
}
}
return;
}
// Table with addresses of the y-lines of the form. The first line contains the address of the form screen.
@ -281,7 +314,8 @@ void form_render_values() {
}
// Reads keyboard and allows the user to navigate and change the fields of the form
void form_control() {
// Returns 0 if space is not pressed, non-0 if space is pressed
byte form_control() {
byte* field = form_field_ptr(form_field_idx);
// Blinking cursor
@ -316,7 +350,7 @@ void form_control() {
// Always blink cursor in new field
form_cursor_count = FORM_CURSOR_BLINK/2;
// Return to refresh
return;
return 0;
}
// Change value with cursor left/right
@ -334,7 +368,13 @@ void form_control() {
}
// Render field value
*field = print_hextab[form_fields_val[form_field_idx]];
return;
return 0;
}
// Check for space press
if(key_event==KEY_SPACE) {
return $ff;
}
return 0;
}

View File

@ -0,0 +1,8 @@
// Illustrates the problem with variable forward references not working
void main() {
*screen = b;
}
const byte* screen = $400;
const byte b = 'a';

View File

@ -2,7 +2,6 @@
:BasicUpstart(main)
.pc = $80d "Program"
.label RASTER = $d012
.label BORDERCOL = $d020
.label BGCOL = $d021
.label BGCOL1 = $d021
.label BGCOL2 = $d022
@ -55,15 +54,16 @@
.const KEY_LSHIFT = $f
.const KEY_RSHIFT = $34
.const KEY_CTRL = $3a
.const KEY_SPACE = $3c
.const KEY_COMMODORE = $3d
.const KEY_MODIFIER_LSHIFT = 1
.const KEY_MODIFIER_RSHIFT = 2
.const KEY_MODIFIER_CTRL = 4
.const KEY_MODIFIER_COMMODORE = 8
.label VIC_SCREEN_STDCHAR = $8400
.const PLANE_8BPP_CHUNKY = $20000
.label FORM_SCREEN = $8000
.label FORM_CHARSET = $9800
.const FORM_OFFSET = $10*$28
.const form_fields_cnt = $23
.const FORM_CURSOR_BLINK = $28
.const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
@ -97,10 +97,11 @@
.label form_vic_bg3_hi = form_fields_val+$21
.label form_vic_bg3_lo = form_fields_val+$22
.label print_char_cursor = 9
.label keyboard_events_size = 6
.label form_cursor_count = 2
.label form_field_idx = 3
.label print_line_cursor = $b
.label keyboard_events_size = 4
.label keyboard_modifiers = 3
.label form_cursor_count = 5
.label form_field_idx = 6
jsr main
main: {
sei
@ -111,21 +112,14 @@ main: {
jsr form_init
lda #0
sta form_field_idx
sta keyboard_modifiers
sta keyboard_events_size
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
b4:
lda RASTER
cmp #$30+8*$10
bne b4
b2:
jsr form_mode
b7:
lda RASTER
cmp #$ff
bne b7
jsr form_control
jsr gfx_mode
jmp b4
jmp b2
}
gfx_mode: {
.label _33 = 7
@ -138,10 +132,10 @@ gfx_mode: {
.label plane_b = $d
lda form_ctrl_line
cmp #0
beq b11
beq b12
ldx #0|DTV_LINEAR
jmp b1
b11:
b12:
ldx #0
b1:
lda form_ctrl_borof
@ -182,10 +176,10 @@ gfx_mode: {
stx DTV_CONTROL
lda form_ctrl_ecm
cmp #0
beq b12
beq b13
ldx #VIC_DEN|VIC_RSEL|3|VIC_ECM
jmp b7
b12:
b13:
ldx #VIC_DEN|VIC_RSEL|3
b7:
lda form_ctrl_bmm
@ -198,10 +192,10 @@ gfx_mode: {
stx VIC_CONTROL
lda form_ctrl_mcm
cmp #0
beq b13
beq b15
lda #VIC_CSEL|VIC_MCM
jmp b9
b13:
b15:
lda #VIC_CSEL
b9:
sta VIC_CONTROL2
@ -341,107 +335,18 @@ gfx_mode: {
inx
cpx #$10
bne b10
rts
}
form_control: {
.label field = 7
ldx form_field_idx
jsr form_field_ptr
dec form_cursor_count
lda form_cursor_count
cmp #0
bpl b1
lda #FORM_CURSOR_BLINK
sta form_cursor_count
b1:
lda form_cursor_count
sec
sbc #FORM_CURSOR_BLINK/2
bvc !+
eor #$80
!:
bmi !b2+
jmp b2
!b2:
lda #$80
ldy #0
ora (field),y
sta (field),y
b3:
jsr keyboard_event_scan
jsr keyboard_event_get
cmp #KEY_CRSR_DOWN
bne b4
lda #$7f
ldy #0
and (field),y
sta (field),y
txa
and #KEY_MODIFIER_SHIFT
cmp #0
bne b5
inc form_field_idx
lda form_field_idx
cmp #form_fields_cnt
bne b7
tya
sta form_field_idx
b7:
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
jmp b14
breturn:
rts
b5:
dec form_field_idx
lda form_field_idx
b14:
lda RASTER
cmp #$ff
bne b7
lda #form_fields_cnt-1
sta form_field_idx
jmp b7
b4:
cmp #KEY_CRSR_RIGHT
bne breturn
txa
and #KEY_MODIFIER_SHIFT
cmp #0
bne b10
ldx form_field_idx
inc form_fields_val,x
ldy form_field_idx
lda form_fields_val,y
cmp form_fields_max,y
bcc b12
beq b12
lda #0
sta form_fields_val,y
b12:
ldy form_field_idx
lda form_fields_val,y
tay
lda print_hextab,y
ldy #0
sta (field),y
bne b14
jsr keyboard_event_scan
jsr keyboard_event_get
cmp #KEY_SPACE
bne b14
jmp breturn
b10:
ldx form_field_idx
lda form_fields_val,x
sec
sbc #1
sta form_fields_val,x
ldy form_field_idx
lda form_fields_val,y
cmp #$ff
bne b12
lda form_fields_max,y
sta form_fields_val,y
jmp b12
b2:
lda #$7f
ldy #0
and (field),y
sta (field),y
jmp b3
}
keyboard_event_get: {
lda keyboard_events_size
@ -457,8 +362,8 @@ keyboard_event_get: {
}
keyboard_event_scan: {
.label row_scan = $11
.label keycode = 5
.label row = 4
.label keycode = 3
.label row = 2
lda #0
sta keycode
sta row
@ -510,37 +415,39 @@ keyboard_event_scan: {
jsr keyboard_event_pressed
cmp #0
beq b5
ldx #0|KEY_MODIFIER_LSHIFT
lda #0|KEY_MODIFIER_LSHIFT
sta keyboard_modifiers
jmp b9
b5:
ldx #0
lda #0
sta keyboard_modifiers
b9:
lda #KEY_RSHIFT
sta keyboard_event_pressed.keycode
jsr keyboard_event_pressed
cmp #0
beq b10
txa
ora #KEY_MODIFIER_RSHIFT
tax
lda #KEY_MODIFIER_RSHIFT
ora keyboard_modifiers
sta keyboard_modifiers
b10:
lda #KEY_CTRL
sta keyboard_event_pressed.keycode
jsr keyboard_event_pressed
cmp #0
beq b11
txa
ora #KEY_MODIFIER_CTRL
tax
lda #KEY_MODIFIER_CTRL
ora keyboard_modifiers
sta keyboard_modifiers
b11:
lda #KEY_COMMODORE
sta keyboard_event_pressed.keycode
jsr keyboard_event_pressed
cmp #0
beq breturn
txa
ora #KEY_MODIFIER_COMMODORE
tax
lda #KEY_MODIFIER_COMMODORE
ora keyboard_modifiers
sta keyboard_modifiers
breturn:
rts
b6:
@ -557,20 +464,18 @@ keyboard_event_scan: {
jmp b8
}
keyboard_event_pressed: {
.label row_bits = 5
.label keycode = 4
.label keycode = 2
lda keycode
lsr
lsr
lsr
tay
lda keyboard_scan_values,y
sta row_bits
tax
ldy keyboard_scan_values,x
lda #7
and keycode
tay
lda keyboard_matrix_col_bitmask,y
and row_bits
tax
tya
and keyboard_matrix_col_bitmask,x
rts
}
keyboard_matrix_read: {
@ -580,23 +485,6 @@ keyboard_matrix_read: {
eor #$ff
rts
}
form_field_ptr: {
.label return = 7
.label _2 = 7
ldy form_fields_y,x
lda form_line_hi,y
sta _2+1
lda form_line_lo,y
sta _2
lda form_fields_x,x
clc
adc return
sta return
lda #0
adc return+1
sta return+1
rts
}
form_mode: {
lda #($ffffffff&FORM_CHARSET)/$10000
sta DTV_GRAPHICS_VIC_BANK
@ -624,26 +512,163 @@ form_mode: {
cpx #$10
bne b1
lda #0
sta BORDERCOL
sta BGCOL
jmp b5
breturn:
rts
b5:
lda RASTER
cmp #$ff
bne b5
jsr form_control
txa
cmp #0
beq b5
jmp breturn
}
form_control: {
.label field = 7
ldx form_field_idx
jsr form_field_ptr
dec form_cursor_count
lda form_cursor_count
cmp #0
bpl b1
lda #FORM_CURSOR_BLINK
sta form_cursor_count
b1:
lda form_cursor_count
sec
sbc #FORM_CURSOR_BLINK/2
bvc !+
eor #$80
!:
bmi !b2+
jmp b2
!b2:
lda #$80
ldy #0
ora (field),y
sta (field),y
b3:
jsr keyboard_event_scan
jsr keyboard_event_get
cmp #KEY_CRSR_DOWN
bne b4
lda #$7f
ldy #0
and (field),y
sta (field),y
lda #KEY_MODIFIER_SHIFT
and keyboard_modifiers
cmp #0
bne b5
inc form_field_idx
lda form_field_idx
cmp #form_fields_cnt
bne b7
tya
sta form_field_idx
b7:
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
ldx #0
breturn:
rts
b5:
dec form_field_idx
lda form_field_idx
cmp #$ff
bne b7
lda #form_fields_cnt-1
sta form_field_idx
jmp b7
b4:
cmp #KEY_CRSR_RIGHT
bne b9
lda #KEY_MODIFIER_SHIFT
and keyboard_modifiers
cmp #0
bne b10
ldx form_field_idx
inc form_fields_val,x
ldy form_field_idx
lda form_fields_val,y
cmp form_fields_max,y
bcc b12
beq b12
lda #0
sta form_fields_val,y
b12:
ldy form_field_idx
lda form_fields_val,y
tay
lda print_hextab,y
ldy #0
sta (field),y
b6:
ldx #0
jmp breturn
b10:
ldx form_field_idx
lda form_fields_val,x
sec
sbc #1
sta form_fields_val,x
ldy form_field_idx
lda form_fields_val,y
cmp #$ff
bne b12
lda form_fields_max,y
sta form_fields_val,y
jmp b12
b9:
cmp #KEY_SPACE
bne b6
ldx #$ff
jmp breturn
b2:
lda #$7f
ldy #0
and (field),y
sta (field),y
jmp b3
}
form_field_ptr: {
.label return = 7
.label _2 = 7
ldy form_fields_y,x
lda form_line_hi,y
sta _2+1
lda form_line_lo,y
sta _2
lda form_fields_x,x
clc
adc return
sta return
lda #0
adc return+1
sta return+1
rts
}
form_init: {
lda #<COLS+FORM_OFFSET
lda #<COLS
sta print_set_screen.screen
lda #>COLS+FORM_OFFSET
lda #>COLS
sta print_set_screen.screen+1
jsr print_set_screen
jsr print_cls
lda #<FORM_COLS
sta print_str_lines.str
lda #>FORM_COLS
sta print_str_lines.str+1
jsr print_str_lines
lda #<FORM_SCREEN+FORM_OFFSET
lda #<FORM_SCREEN
sta print_set_screen.screen
lda #>FORM_SCREEN+FORM_OFFSET
lda #>FORM_SCREEN
sta print_set_screen.screen+1
jsr print_set_screen
jsr print_cls
lda #<FORM_TEXT
sta print_str_lines.str
lda #>FORM_TEXT
@ -669,12 +694,11 @@ form_render_values: {
rts
}
form_set_screen: {
.label screen = FORM_SCREEN+FORM_OFFSET
.label line = 7
ldx #0
lda #<screen
lda #<FORM_SCREEN
sta line
lda #>screen
lda #>FORM_SCREEN
sta line+1
b1:
lda line
@ -749,11 +773,42 @@ print_ln: {
!:
rts
}
print_cls: {
.label _0 = 9
.label sc = 7
lda print_set_screen.screen
sta sc
lda print_set_screen.screen+1
sta sc+1
b1:
lda #' '
ldy #0
sta (sc),y
inc sc
bne !+
inc sc+1
!:
lda print_set_screen.screen
clc
adc #<$3e8
sta _0
lda print_set_screen.screen+1
adc #>$3e8
sta _0+1
lda sc+1
cmp _0+1
bne b1
lda sc
cmp _0
bne b1
rts
}
print_set_screen: {
.label screen = $b
rts
}
gfx_init: {
jsr gfx_init_screen_stdchar
jsr gfx_init_plane_8bppchunky
rts
}
@ -830,6 +885,44 @@ dtvSetCpuBankSegment1: {
.byte $32, $00
rts
}
gfx_init_screen_stdchar: {
.label _1 = 3
.label ch = 7
.label cy = 2
lda #<VIC_SCREEN_STDCHAR
sta ch
lda #>VIC_SCREEN_STDCHAR
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
}
keyboard_init: {
lda #$ff
sta CIA1_PORT_A_DDR

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @32
(label) @33
(label) @begin
(label) @end
(byte*) BGCOL
@ -11,8 +11,6 @@
(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*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
(byte*) CIA1_PORT_A
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320
(byte*) CIA1_PORT_A_DDR
@ -87,8 +85,6 @@
(const string) FORM_COLS#0 FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+(string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+(string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+(string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+(string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+(string) " nnnnnnn ooooooooo @"+(string) " nnnnnnn nnnnnnnn ooooooooo @"+(string) " nnnnnnn nnnnnnnn ooooooooo @"+(string) "@"
(signed byte) FORM_CURSOR_BLINK
(const signed byte) FORM_CURSOR_BLINK#0 FORM_CURSOR_BLINK = (byte/signed byte/word/signed word/dword/signed dword) 40
(word) FORM_OFFSET
(const word) FORM_OFFSET#0 FORM_OFFSET = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40
(byte*) FORM_SCREEN
(const byte*) FORM_SCREEN#0 FORM_SCREEN = ((byte*))(word/dword/signed dword) 32768
(byte[]) FORM_TEXT
@ -115,6 +111,8 @@
(const byte) KEY_MODIFIER_SHIFT#0 KEY_MODIFIER_SHIFT = (const byte) KEY_MODIFIER_LSHIFT#0|(const byte) KEY_MODIFIER_RSHIFT#0
(byte) KEY_RSHIFT
(const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 52
(byte) KEY_SPACE
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60
(dword) PLANE_8BPP_CHUNKY
(const dword) PLANE_8BPP_CHUNKY#0 PLANE_8BPP_CHUNKY = (dword/signed dword) 131072
(byte*) RASTER
@ -137,6 +135,8 @@
(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
(byte*) VIC_SCREEN_STDCHAR
(const byte*) VIC_SCREEN_STDCHAR#0 VIC_SCREEN_STDCHAR = ((byte*))(word/dword/signed dword) 33792
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
(label) dtvSetCpuBankSegment1::@return
(byte*) dtvSetCpuBankSegment1::cpuBank
@ -168,7 +168,7 @@
(const byte*) form_b_step_hi#0 form_b_step_hi = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 20
(byte*) form_b_step_lo
(const byte*) form_b_step_lo#0 form_b_step_lo = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 21
(void()) form_control()
(byte()) form_control()
(byte~) form_control::$12 reg byte a 4.0
(byte~) form_control::$13 reg byte a 4.0
(byte~) form_control::$24 reg byte a 4.0
@ -177,29 +177,34 @@
(label) form_control::@1
(label) form_control::@10
(label) form_control::@12
(label) form_control::@15
(label) form_control::@17
(label) form_control::@16
(label) form_control::@18
(label) form_control::@19
(label) form_control::@2
(label) form_control::@23
(label) form_control::@24
(label) form_control::@25
(label) form_control::@27
(label) form_control::@29
(label) form_control::@26
(label) form_control::@28
(label) form_control::@3
(label) form_control::@30
(label) form_control::@31
(label) form_control::@32
(label) form_control::@33
(label) form_control::@34
(label) form_control::@35
(label) form_control::@36
(label) form_control::@37
(label) form_control::@38
(label) form_control::@39
(label) form_control::@4
(label) form_control::@5
(label) form_control::@7
(label) form_control::@9
(label) form_control::@return
(byte*) form_control::field
(byte*) form_control::field#0 field zp ZP_WORD:7 0.5925925925925926
(byte) form_control::key_event
(byte) form_control::key_event#0 reg byte a 3.0
(byte) form_control::key_event#0 reg byte a 2.6666666666666665
(byte) form_control::return
(byte) form_control::return#0 reg byte a 202.0
(byte) form_control::return#2 reg byte x 33.666666666666664
(byte*) form_ctrl_bmm
(const byte*) form_ctrl_bmm#0 form_ctrl_bmm = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 1
(byte*) form_ctrl_borof
@ -219,16 +224,20 @@
(byte*) form_ctrl_overs
(const byte*) form_ctrl_overs#0 form_ctrl_overs = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 9
(signed byte) form_cursor_count
(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:2 1.1818181818181819
(signed byte) form_cursor_count#11 form_cursor_count zp ZP_BYTE:2 0.34782608695652173
(signed byte) form_cursor_count#12 form_cursor_count zp ZP_BYTE:2 3.0
(signed byte) form_cursor_count#3 form_cursor_count zp ZP_BYTE:2 2.0
(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:5 0.7647058823529412
(signed byte) form_cursor_count#13 form_cursor_count zp ZP_BYTE:5 42.599999999999994
(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:5 0.4
(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:5 34.66666666666667
(signed byte) form_cursor_count#21 form_cursor_count zp ZP_BYTE:5 25.75
(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:5 2.0
(byte) form_field_idx
(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:3 1.0487804878048785
(byte) form_field_idx#14 form_field_idx zp ZP_BYTE:3 3.4
(byte) form_field_idx#24 form_field_idx zp ZP_BYTE:3 6.0
(byte) form_field_idx#3 form_field_idx zp ZP_BYTE:3 2.0
(byte) form_field_idx#34 form_field_idx zp ZP_BYTE:3 2.0
(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:6 0.7647058823529412
(byte) form_field_idx#14 form_field_idx zp ZP_BYTE:6 42.599999999999994
(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:6 35.00000000000001
(byte) form_field_idx#28 form_field_idx zp ZP_BYTE:6 5.949999999999997
(byte) form_field_idx#32 form_field_idx zp ZP_BYTE:6 6.0
(byte) form_field_idx#43 form_field_idx zp ZP_BYTE:6 2.0
(byte) form_field_idx#44 form_field_idx zp ZP_BYTE:6 2.0
(byte*()) form_field_ptr((byte) form_field_ptr::field_idx)
(word~) form_field_ptr::$2 $2 zp ZP_WORD:7 1.0
(label) form_field_ptr::@return
@ -262,14 +271,21 @@
(label) form_init::@3
(label) form_init::@4
(label) form_init::@5
(label) form_init::@6
(label) form_init::@7
(label) form_init::@return
(byte[25]) form_line_hi
(const byte[25]) form_line_hi#0 form_line_hi = { fill( 25, 0) }
(byte[25]) form_line_lo
(const byte[25]) form_line_lo#0 form_line_lo = { fill( 25, 0) }
(void()) form_mode()
(byte~) form_mode::$25 reg byte a 202.0
(label) form_mode::@1
(label) form_mode::@19
(label) form_mode::@2
(label) form_mode::@5
(label) form_mode::@7
(label) form_mode::@9
(label) form_mode::@return
(byte) form_mode::i
(byte) form_mode::i#1 reg byte x 151.5
@ -292,7 +308,6 @@
(byte*) form_set_screen::line#1 line zp ZP_WORD:7 7.333333333333333
(byte*) form_set_screen::line#2 line zp ZP_WORD:7 8.8
(byte*) form_set_screen::screen
(const byte*) form_set_screen::screen#0 screen = (const byte*) FORM_SCREEN#0+(const word) FORM_OFFSET#0
(byte) form_set_screen::y
(byte) form_set_screen::y#1 reg byte x 16.5
(byte) form_set_screen::y#2 reg byte x 7.333333333333333
@ -313,6 +328,7 @@
(byte*) form_vic_bg3_lo
(const byte*) form_vic_bg3_lo#0 form_vic_bg3_lo = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 34
(void()) gfx_init()
(label) gfx_init::@1
(label) gfx_init::@return
(void()) gfx_init_plane_8bppchunky()
(word~) gfx_init_plane_8bppchunky::$6 $6 zp ZP_WORD:11 202.0
@ -342,6 +358,25 @@
(byte) gfx_init_plane_8bppchunky::y
(byte) gfx_init_plane_8bppchunky::y#1 y zp ZP_BYTE:2 16.5
(byte) gfx_init_plane_8bppchunky::y#6 y zp ZP_BYTE:2 9.461538461538462
(void()) gfx_init_screen_stdchar()
(byte~) gfx_init_screen_stdchar::$0 reg byte a 202.0
(byte~) gfx_init_screen_stdchar::$1 $1 zp ZP_BYTE:3 101.0
(byte~) gfx_init_screen_stdchar::$2 reg byte a 202.0
(byte~) gfx_init_screen_stdchar::$3 reg byte a 202.0
(label) gfx_init_screen_stdchar::@1
(label) gfx_init_screen_stdchar::@2
(label) gfx_init_screen_stdchar::@3
(label) gfx_init_screen_stdchar::@return
(byte*) gfx_init_screen_stdchar::ch
(byte*) gfx_init_screen_stdchar::ch#1 ch zp ZP_WORD:7 42.599999999999994
(byte*) gfx_init_screen_stdchar::ch#2 ch zp ZP_WORD:7 52.33333333333333
(byte*) gfx_init_screen_stdchar::ch#3 ch zp ZP_WORD:7 22.0
(byte) gfx_init_screen_stdchar::cx
(byte) gfx_init_screen_stdchar::cx#1 reg byte x 151.5
(byte) gfx_init_screen_stdchar::cx#2 reg byte x 43.285714285714285
(byte) gfx_init_screen_stdchar::cy
(byte) gfx_init_screen_stdchar::cy#1 cy zp ZP_BYTE:2 16.5
(byte) gfx_init_screen_stdchar::cy#4 cy zp ZP_BYTE:2 12.299999999999999
(void()) gfx_mode()
(byte~) gfx_mode::$29 reg byte a 4.0
(word~) gfx_mode::$33 $33 zp ZP_WORD:7 4.0
@ -376,16 +411,21 @@
(label) gfx_mode::@1
(label) gfx_mode::@10
(label) gfx_mode::@11
(label) gfx_mode::@12
(label) gfx_mode::@13
(label) gfx_mode::@14
(label) gfx_mode::@15
(label) gfx_mode::@16
(label) gfx_mode::@17
(label) gfx_mode::@18
(label) gfx_mode::@19
(label) gfx_mode::@2
(label) gfx_mode::@20
(label) gfx_mode::@21
(label) gfx_mode::@22
(label) gfx_mode::@23
(label) gfx_mode::@24
(label) gfx_mode::@25
(label) gfx_mode::@26
(label) gfx_mode::@3
(label) gfx_mode::@36
(label) gfx_mode::@37
(label) gfx_mode::@4
(label) gfx_mode::@5
(label) gfx_mode::@6
@ -408,6 +448,8 @@
(byte) gfx_mode::i
(byte) gfx_mode::i#1 reg byte x 151.5
(byte) gfx_mode::i#2 reg byte x 202.0
(byte) gfx_mode::keyboard_event
(byte) gfx_mode::keyboard_event#0 reg byte a 202.0
(dword) gfx_mode::plane_a
(dword) gfx_mode::plane_a#0 plane_a zp ZP_DWORD:13 1.1428571428571428
(byte) gfx_mode::plane_a_offs
@ -427,14 +469,15 @@
(label) keyboard_event_get::@return
(byte) keyboard_event_get::return
(byte) keyboard_event_get::return#0 reg byte a 4.0
(byte) keyboard_event_get::return#2 reg byte a 1.3333333333333333
(byte) keyboard_event_get::return#3 reg byte a 4.0
(byte) keyboard_event_get::return#2 reg byte a 26.25
(byte) keyboard_event_get::return#3 reg byte a 202.0
(byte) keyboard_event_get::return#4 reg byte a 4.0
(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
(byte~) keyboard_event_pressed::$0 reg byte a 4.0
(byte~) keyboard_event_pressed::$1 reg byte a 4.0
(label) keyboard_event_pressed::@return
(byte) keyboard_event_pressed::keycode
(byte) keyboard_event_pressed::keycode#4 keycode zp ZP_BYTE:4 1.3333333333333333
(byte) keyboard_event_pressed::keycode#4 keycode zp ZP_BYTE:2 1.3333333333333333
(byte) keyboard_event_pressed::return
(byte) keyboard_event_pressed::return#0 reg byte a 4.0
(byte) keyboard_event_pressed::return#1 reg byte a 4.0
@ -442,15 +485,15 @@
(byte) keyboard_event_pressed::return#2 reg byte a 4.0
(byte) keyboard_event_pressed::return#3 reg byte a 4.0
(byte) keyboard_event_pressed::row_bits
(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:5 2.0
(byte) keyboard_event_pressed::row_bits#0 reg byte y 2.0
(void()) keyboard_event_scan()
(byte/word/dword~) keyboard_event_scan::$12 reg byte a 2002.0
(byte/word/dword~) keyboard_event_scan::$12 reg byte a 20002.0
(byte~) keyboard_event_scan::$16 reg byte a 4.0
(byte~) keyboard_event_scan::$20 reg byte a 4.0
(byte~) keyboard_event_scan::$24 reg byte a 4.0
(byte~) keyboard_event_scan::$28 reg byte a 4.0
(byte~) keyboard_event_scan::$3 reg byte a 2002.0
(byte~) keyboard_event_scan::$4 reg byte a 2002.0
(byte~) keyboard_event_scan::$3 reg byte a 20002.0
(byte~) keyboard_event_scan::$4 reg byte a 20002.0
(label) keyboard_event_scan::@1
(label) keyboard_event_scan::@10
(label) keyboard_event_scan::@11
@ -476,33 +519,38 @@
(label) keyboard_event_scan::@9
(label) keyboard_event_scan::@return
(byte) keyboard_event_scan::col
(byte) keyboard_event_scan::col#1 reg byte x 1501.5
(byte) keyboard_event_scan::col#2 reg byte x 286.0
(byte) keyboard_event_scan::col#1 reg byte x 15001.5
(byte) keyboard_event_scan::col#2 reg byte x 2857.4285714285716
(byte) keyboard_event_scan::event_type
(byte) keyboard_event_scan::event_type#0 reg byte a 2002.0
(byte) keyboard_event_scan::event_type#0 reg byte a 20002.0
(byte) keyboard_event_scan::keycode
(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:5 202.0
(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:5 315.7692307692308
(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:5 50.5
(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:5 101.0
(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:5 525.75
(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:3 2002.0
(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:3 3154.230769230769
(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:3 500.5
(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:3 1001.0
(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:3 5250.75
(byte) keyboard_event_scan::row
(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:4 151.5
(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:4 60.239999999999995
(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:2 1501.5
(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:2 600.24
(byte) keyboard_event_scan::row_scan
(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:17 128.05555555555557
(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:17 1278.0555555555554
(byte[8]) keyboard_events
(const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:6 2002.0
(byte) keyboard_events_size#12 keyboard_events_size zp ZP_BYTE:6 810.9000000000001
(byte) keyboard_events_size#15 keyboard_events_size zp ZP_BYTE:6 9.65625
(byte) keyboard_events_size#18 keyboard_events_size zp ZP_BYTE:6 0.46875
(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:6 2002.0
(byte) keyboard_events_size#20 keyboard_events_size zp ZP_BYTE:6 0.5909090909090909
(byte) keyboard_events_size#37 keyboard_events_size zp ZP_BYTE:6 43.57142857142858
(byte) keyboard_events_size#38 keyboard_events_size zp ZP_BYTE:6 1021.2
(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:6 3.0
(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:4 20002.0
(byte) keyboard_events_size#104 keyboard_events_size zp ZP_BYTE:4 105.0
(byte) keyboard_events_size#105 keyboard_events_size zp ZP_BYTE:4 88.5
(byte) keyboard_events_size#11 keyboard_events_size zp ZP_BYTE:4 71.0
(byte) keyboard_events_size#111 keyboard_events_size zp ZP_BYTE:4 10201.2
(byte) keyboard_events_size#112 keyboard_events_size zp ZP_BYTE:4 429.2857142857143
(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:4 3.4431818181818183
(byte) keyboard_events_size#18 keyboard_events_size zp ZP_BYTE:4 8100.9000000000015
(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:4 20002.0
(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:4 10.461538461538462
(byte) keyboard_events_size#27 keyboard_events_size zp ZP_BYTE:4 0.7647058823529412
(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:4 3.0
(byte) keyboard_events_size#45 keyboard_events_size zp ZP_BYTE:4 101.0
(byte) keyboard_events_size#47 keyboard_events_size zp ZP_BYTE:4 11.444444444444443
(void()) keyboard_init()
(label) keyboard_init::@return
(byte[8]) keyboard_matrix_col_bitmask
@ -510,46 +558,56 @@
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 reg byte a 34.33333333333333
(byte) keyboard_matrix_read::return#2 reg byte a 202.0
(byte) keyboard_matrix_read::return#0 reg byte a 334.33333333333337
(byte) keyboard_matrix_read::return#2 reg byte a 2002.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte x 103.0
(byte) keyboard_matrix_read::rowid#0 reg byte x 1003.0
(byte[8]) keyboard_matrix_row_bitmask
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 }
(byte) keyboard_modifiers
(byte) keyboard_modifiers#13 reg byte x 0.8
(byte) keyboard_modifiers#14 reg byte x 1.6
(byte) keyboard_modifiers#15 reg byte x 1.6
(byte) keyboard_modifiers#16 reg byte x 0.7272727272727273
(byte) keyboard_modifiers#3 reg byte x 4.0
(byte) keyboard_modifiers#4 reg byte x 4.0
(byte) keyboard_modifiers#5 reg byte x 4.0
(byte) keyboard_modifiers#11 keyboard_modifiers zp ZP_BYTE:3 71.0
(byte) keyboard_modifiers#13 keyboard_modifiers zp ZP_BYTE:3 3.4431818181818183
(byte) keyboard_modifiers#18 keyboard_modifiers zp ZP_BYTE:3 0.8
(byte) keyboard_modifiers#19 keyboard_modifiers zp ZP_BYTE:3 1.6
(byte) keyboard_modifiers#20 keyboard_modifiers zp ZP_BYTE:3 1.6
(byte) keyboard_modifiers#21 keyboard_modifiers zp ZP_BYTE:3 9.58139534883721
(byte) keyboard_modifiers#24 keyboard_modifiers zp ZP_BYTE:3 0.7647058823529412
(byte) keyboard_modifiers#3 keyboard_modifiers zp ZP_BYTE:3 4.0
(byte) keyboard_modifiers#4 keyboard_modifiers zp ZP_BYTE:3 4.0
(byte) keyboard_modifiers#42 keyboard_modifiers zp ZP_BYTE:3 151.5
(byte) keyboard_modifiers#45 keyboard_modifiers zp ZP_BYTE:3 102.0
(byte) keyboard_modifiers#5 keyboard_modifiers zp ZP_BYTE:3 4.0
(byte[8]) keyboard_scan_values
(const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) }
(void()) main()
(label) main::@1
(label) main::@19
(label) main::@20
(label) main::@23
(label) main::@4
(label) main::@6
(label) main::@10
(label) main::@2
(label) main::@7
(label) main::@9
(label) main::@8
(label) main::@return
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:9 202.0
(byte*) print_char_cursor#16 print_char_cursor zp ZP_WORD:9 83.0
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:9 12.0
(byte*) print_char_cursor#31 print_char_cursor zp ZP_WORD:9 57.714285714285715
(byte*) print_char_cursor#20 print_char_cursor zp ZP_WORD:9 83.0
(byte*) print_char_cursor#22 print_char_cursor zp ZP_WORD:9 12.0
(byte*) print_char_cursor#38 print_char_cursor zp ZP_WORD:9 57.714285714285715
(byte*~) print_char_cursor#60 print_char_cursor zp ZP_WORD:9 4.0
(byte*~) print_char_cursor#61 print_char_cursor zp ZP_WORD:9 22.0
(void()) print_cls()
(byte*~) print_cls::$0 $0 zp ZP_WORD:9 22.0
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#0 sc zp ZP_WORD:7 4.0
(byte*) print_cls::sc#1 sc zp ZP_WORD:7 11.0
(byte*) print_cls::sc#2 sc zp ZP_WORD:7 17.5
(byte[]) print_hextab
(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
(byte*) print_line_cursor#16 print_line_cursor zp ZP_WORD:11 1.25
(byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:11 204.0
(byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:11 65.0
(byte*) print_line_cursor#2 print_line_cursor zp ZP_WORD:11 1.25
(byte*) print_line_cursor#21 print_line_cursor zp ZP_WORD:11 204.0
(byte*) print_line_cursor#22 print_line_cursor zp ZP_WORD:11 65.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
@ -557,7 +615,7 @@
(void()) print_set_screen((byte*) print_set_screen::screen)
(label) print_set_screen::@return
(byte*) print_set_screen::screen
(byte*) print_set_screen::screen#2 screen zp ZP_WORD:11 0.5
(byte*) print_set_screen::screen#2 screen zp ZP_WORD:11 0.8947368421052632
(void()) print_str_lines((byte*) print_str_lines::str)
(label) print_str_lines::@1
(label) print_str_lines::@4
@ -573,27 +631,28 @@
(byte*) print_str_lines::str#4 str zp ZP_WORD:7 157.0
(byte*) print_str_lines::str#5 str zp ZP_WORD:7 1.0
zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#12 form_cursor_count#11 form_cursor_count#3 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ]
zp ZP_BYTE:3 [ form_field_idx#1 form_field_idx#14 form_field_idx#24 form_field_idx#34 form_field_idx#3 ]
reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#3 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 ]
reg byte x [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ]
reg byte x [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ]
reg byte a [ gfx_mode::vic_control2#2 ]
reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ]
reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#0 ]
zp ZP_BYTE:4 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 ]
zp ZP_BYTE:2 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_event_pressed::keycode#4 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_screen_stdchar::cy#4 gfx_init_screen_stdchar::cy#1 ]
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
zp ZP_BYTE:5 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 keyboard_event_pressed::row_bits#0 ]
zp ZP_BYTE:6 [ keyboard_events_size#12 keyboard_events_size#37 keyboard_events_size#20 keyboard_events_size#18 keyboard_events_size#4 keyboard_events_size#15 keyboard_events_size#38 keyboard_events_size#2 keyboard_events_size#1 ]
reg byte x [ keyboard_modifiers#16 keyboard_modifiers#15 keyboard_modifiers#4 keyboard_modifiers#14 keyboard_modifiers#3 keyboard_modifiers#13 keyboard_modifiers#5 ]
reg byte x [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ]
zp ZP_BYTE:3 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 keyboard_modifiers#45 keyboard_modifiers#24 keyboard_modifiers#11 keyboard_modifiers#42 keyboard_modifiers#13 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 gfx_init_screen_stdchar::$1 ]
zp ZP_BYTE:4 [ keyboard_events_size#18 keyboard_events_size#112 keyboard_events_size#104 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#11 keyboard_events_size#45 keyboard_events_size#13 keyboard_events_size#24 keyboard_events_size#4 keyboard_events_size#105 keyboard_events_size#111 keyboard_events_size#2 keyboard_events_size#1 ]
reg byte x [ form_mode::i#2 form_mode::i#1 ]
zp ZP_BYTE:5 [ form_cursor_count#21 form_cursor_count#16 form_cursor_count#1 form_cursor_count#13 form_cursor_count#15 form_cursor_count#5 ]
zp ZP_BYTE:6 [ form_field_idx#28 form_field_idx#18 form_field_idx#1 form_field_idx#14 form_field_idx#32 form_field_idx#43 form_field_idx#44 ]
reg byte x [ form_control::return#2 ]
reg byte x [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ]
reg byte x [ form_render_values::idx#2 form_render_values::idx#1 ]
zp ZP_WORD:7 [ form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$46 gfx_mode::$48 gfx_mode::$50 form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#2 form_render_values::field#0 ]
zp ZP_WORD:7 [ form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 gfx_init_screen_stdchar::ch#2 gfx_init_screen_stdchar::ch#3 gfx_init_screen_stdchar::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$46 gfx_mode::$48 gfx_mode::$50 form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#2 form_render_values::field#0 ]
reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ]
zp ZP_WORD:9 [ print_char_cursor#16 print_char_cursor#18 print_char_cursor#60 print_char_cursor#61 print_char_cursor#31 print_char_cursor#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ]
zp ZP_WORD:11 [ print_line_cursor#17 print_line_cursor#16 print_set_screen::screen#2 print_line_cursor#18 gfx_init_plane_8bppchunky::$6 ]
zp ZP_WORD:9 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#60 print_char_cursor#61 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 print_cls::$0 ]
zp ZP_WORD:11 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 gfx_init_plane_8bppchunky::$6 ]
reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ]
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
reg byte x [ gfx_init_screen_stdchar::cx#2 gfx_init_screen_stdchar::cx#1 ]
reg byte a [ gfx_mode::$29 ]
reg byte a [ gfx_mode::plane_a_offs#0 ]
zp ZP_DWORD:13 [ gfx_mode::plane_a#0 gfx_mode::plane_b#0 ]
@ -621,13 +680,8 @@ reg byte a [ gfx_mode::$60 ]
reg byte a [ gfx_mode::$61 ]
reg byte a [ gfx_mode::$62 ]
reg byte a [ gfx_mode::$63 ]
reg byte a [ form_control::$6 ]
reg byte a [ keyboard_event_get::return#3 ]
reg byte a [ form_control::key_event#0 ]
reg byte a [ form_control::$12 ]
reg byte a [ form_control::$13 ]
reg byte a [ form_control::$24 ]
reg byte a [ form_control::$7 ]
reg byte a [ gfx_mode::keyboard_event#0 ]
reg byte x [ keyboard_matrix_read::rowid#0 ]
reg byte a [ keyboard_matrix_read::return#2 ]
zp ZP_BYTE:17 [ keyboard_event_scan::row_scan#0 ]
@ -644,12 +698,25 @@ reg byte a [ keyboard_event_scan::$24 ]
reg byte a [ keyboard_event_pressed::return#3 ]
reg byte a [ keyboard_event_scan::$28 ]
reg byte a [ keyboard_event_pressed::$0 ]
reg byte y [ keyboard_event_pressed::row_bits#0 ]
reg byte a [ keyboard_event_pressed::$1 ]
reg byte a [ keyboard_event_pressed::return#10 ]
reg byte a [ keyboard_matrix_read::return#0 ]
reg byte a [ form_control::return#0 ]
reg byte a [ form_mode::$25 ]
reg byte a [ form_control::$6 ]
reg byte a [ keyboard_event_get::return#4 ]
reg byte a [ form_control::key_event#0 ]
reg byte a [ form_control::$12 ]
reg byte a [ form_control::$13 ]
reg byte a [ form_control::$24 ]
reg byte a [ form_control::$7 ]
reg byte y [ form_field_ptr::y#0 ]
reg byte a [ form_field_ptr::x#0 ]
reg byte a [ form_set_screen::$0 ]
reg byte a [ form_set_screen::$1 ]
reg byte a [ print_str_lines::ch#0 ]
reg byte a [ gfx_init_plane_8bppchunky::c#0 ]
reg byte a [ gfx_init_screen_stdchar::$0 ]
reg byte a [ gfx_init_screen_stdchar::$2 ]
reg byte a [ gfx_init_screen_stdchar::$3 ]