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

Added form field max values

This commit is contained in:
jespergravgaard 2018-04-03 19:49:06 +02:00
parent 25f396de12
commit 0ad7984fe2
5 changed files with 1981 additions and 1826 deletions

View File

@ -74,6 +74,8 @@ byte form_fields_cnt = 9;
// Form fields x/y-positions
byte[] form_fields_x = { 7, 7, 7, 7, 7, 7, 7, 17, 17 };
byte[] form_fields_y = { 2, 3, 4, 5, 6, 7, 8, 7, 8 };
// Form field max values (all values are in the interval 0 .. max-1)
byte[] form_fields_max = { 1, 1, 1, 1, 1, 2, 1, 1, 1 };
// Form fields values
byte[] form_fields_val = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
@ -157,17 +159,20 @@ void form_control() {
}
// Change value with cursor left/right
// Navigation using cursor up/down
byte key_right = keyboard_key_pressed(KEY_CRSR_RIGHT);
if(key_right!=key_right_debounce) {
key_right_debounce = key_right;
if(key_right!=0) {
if(keyboard_key_pressed(KEY_RSHIFT)==0) {
// Increase value
form_fields_val[form_field_idx] = (form_fields_val[form_field_idx]+1) & $f;
if(++form_fields_val[form_field_idx]>form_fields_max[form_field_idx]) {
form_fields_val[form_field_idx] = 0;
}
} else {
// Decrease value
form_fields_val[form_field_idx] = (form_fields_val[form_field_idx]-1) & $f;
if(--form_fields_val[form_field_idx]==$ff) {
form_fields_val[form_field_idx] = form_fields_max[form_field_idx];
}
}
// Render field value
*field = print_hextab[form_fields_val[form_field_idx]];

View File

@ -32,7 +32,8 @@
.label print_char_cursor = 8
.label form_cursor_count = 2
.label key_down_debounce = 3
.label key_right_debounce = 4
.label form_field_idx = 4
.label key_right_debounce = 5
.label print_line_cursor = $a
jsr main
main: {
@ -41,7 +42,7 @@ main: {
sta DTV_FEATURE
lda #0
sta key_right_debounce
tax
sta form_field_idx
sta key_down_debounce
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
@ -52,7 +53,7 @@ main: {
menu: {
.label SCREEN = $8000
.label CHARSET = $9800
.label c = 5
.label c = 6
lda #($ffffffff&CHARSET)/$10000
sta DTV_GRAPHICS_VIC_BANK
lda #DTV_COLOR_BANK_DEFAULT/$400
@ -70,12 +71,12 @@ menu: {
sta VIC_CONTROL2
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
sta VIC_MEMORY
ldy #0
ldx #0
b1:
lda DTV_PALETTE_DEFAULT,y
sta DTV_PALETTE,y
iny
cpy #$10
lda DTV_PALETTE_DEFAULT,x
sta DTV_PALETTE,x
inx
cpx #$10
bne b1
lda #<COLS
sta c
@ -111,8 +112,8 @@ menu: {
jmp b6
}
form_control: {
.label field = 5
stx form_field_ptr.field_idx
.label field = 6
ldx form_field_idx
jsr form_field_ptr
dec form_cursor_count
lda form_cursor_count
@ -127,13 +128,15 @@ form_control: {
bvc !+
eor #$80
!:
bpl b2
bmi !b2+
jmp b2
!b2:
lda #$80
ldy #0
ora (field),y
sta (field),y
b3:
ldy #KEY_CRSR_DOWN
ldx #KEY_CRSR_DOWN
jsr keyboard_key_pressed
cmp key_down_debounce
beq b4
@ -144,56 +147,71 @@ form_control: {
ldy #0
and (field),y
sta (field),y
ldy #KEY_RSHIFT
ldx #KEY_RSHIFT
jsr keyboard_key_pressed
cmp #0
bne b6
inx
cpx #form_fields_cnt
inc form_field_idx
lda form_field_idx
cmp #form_fields_cnt
bne b8
ldx #0
lda #0
sta form_field_idx
b8:
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
breturn:
rts
b6:
dex
cpx #$ff
dec form_field_idx
lda form_field_idx
cmp #$ff
bne b8
ldx #form_fields_cnt-1
lda #form_fields_cnt-1
sta form_field_idx
jmp b8
b4:
ldy #KEY_CRSR_RIGHT
ldx #KEY_CRSR_RIGHT
jsr keyboard_key_pressed
cmp key_right_debounce
beq breturn
sta key_right_debounce
cmp #0
beq breturn
ldy #KEY_RSHIFT
ldx #KEY_RSHIFT
jsr keyboard_key_pressed
cmp #0
bne b12
lda form_fields_val,x
clc
adc #1
and #$f
sta form_fields_val,x
b13:
lda form_fields_val,x
ldx form_field_idx
inc form_fields_val,x
ldy form_field_idx
lda form_fields_val,y
cmp form_fields_max,y
bcc b14
beq b14
lda #0
sta form_fields_val,y
b14:
ldy form_field_idx
lda form_fields_val,y
tay
lda print_hextab,y
ldy #0
sta (field),y
jmp breturn
b12:
ldx form_field_idx
lda form_fields_val,x
sec
sbc #1
and #$f
sta form_fields_val,x
jmp b13
ldy form_field_idx
lda form_fields_val,y
cmp #$ff
bne b14
lda form_fields_max,y
sta form_fields_val,y
jmp b14
b2:
lda #$7f
ldy #0
@ -202,40 +220,34 @@ form_control: {
jmp b3
}
keyboard_key_pressed: {
.label colidx = 7
tya
txa
and #7
sta colidx
tya
lsr
lsr
lsr
tay
txa
lsr
lsr
lsr
tax
jsr keyboard_matrix_read
ldy colidx
and keyboard_matrix_col_bitmask,y
rts
}
keyboard_matrix_read: {
lda keyboard_matrix_row_bitmask,y
lda keyboard_matrix_row_bitmask,x
sta CIA1_PORT_A
lda CIA1_PORT_B
eor #$ff
rts
}
form_field_ptr: {
.label return = 5
.label field_idx = 7
.label _2 = 5
ldy field_idx
lda form_fields_y,y
tay
.label return = 6
.label _2 = 6
ldy form_fields_y,x
lda form_line_hi,y
sta _2+1
lda form_line_lo,y
sta _2
ldy field_idx
lda form_fields_x,y
lda form_fields_x,x
clc
adc return
sta return
@ -245,36 +257,32 @@ form_field_ptr: {
rts
}
form_render_values: {
.label field = 5
.label idx = 7
lda #0
sta idx
.label field = 6
ldx #0
b1:
jsr form_field_ptr
ldy idx
lda form_fields_val,y
lda form_fields_val,x
tay
lda print_hextab,y
ldy #0
sta (field),y
inc idx
lda idx
cmp #form_fields_cnt
inx
cpx #form_fields_cnt
bcc b1
rts
}
form_set_screen: {
.label line = 5
ldy #0
.label line = 6
ldx #0
lda #<menu.SCREEN
sta line
lda #>menu.SCREEN
sta line+1
b1:
lda line
sta form_line_lo,y
sta form_line_lo,x
lda line+1
sta form_line_hi,y
sta form_line_hi,x
lda line
clc
adc #$28
@ -282,13 +290,13 @@ form_set_screen: {
bcc !+
inc line+1
!:
iny
cpy #$19
inx
cpx #$19
bne b1
rts
}
print_str_lines: {
.label str = 5
.label str = 6
lda #<menu.SCREEN
sta print_line_cursor
lda #>menu.SCREEN
@ -352,7 +360,7 @@ print_ln: {
rts
}
print_cls: {
.label sc = 5
.label sc = 6
lda #<menu.SCREEN
sta sc
lda #>menu.SCREEN
@ -384,5 +392,6 @@ print_set_screen: {
form_line_hi: .fill $19, 0
form_fields_x: .byte 7, 7, 7, 7, 7, 7, 7, $11, $11
form_fields_y: .byte 2, 3, 4, 5, 6, 7, 8, 7, 8
form_fields_max: .byte 1, 1, 1, 1, 1, 2, 1, 1, 1
form_fields_val: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0
MENU_TEXT: .text " DTV GfxExplorer PRESET 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p1 patt p2 screen s3 @"+" mcm 0 start 00 start 00 gfx g4 @"+" ecm 0 step 00 step 00 colors c5 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"+" colof 0 borof 0 bgcol2 00 @"+" chunk 0 overs 0 bgcol3 00 @"+"@"

View File

@ -90,111 +90,115 @@ form_control: scope:[form_control] from menu::@8
[45] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#14 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#1 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#1 ] )
[46] call form_field_ptr param-assignment [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#0 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#0 ] )
[47] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] )
to:form_control::@28
form_control::@28: scope:[form_control] from form_control
to:form_control::@32
form_control::@32: scope:[form_control] from form_control
[48] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] )
[49] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#13 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
[50] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@33 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
[50] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@37 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
to:form_control::@1
form_control::@1: scope:[form_control] from form_control::@28 form_control::@33
[51] (signed byte) form_cursor_count#15 ← phi( form_control::@28/(const signed byte) FORM_CURSOR_BLINK#0 form_control::@33/(signed byte) form_cursor_count#5 ) [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
form_control::@1: scope:[form_control] from form_control::@32 form_control::@37
[51] (signed byte) form_cursor_count#15 ← phi( form_control::@32/(const signed byte) FORM_CURSOR_BLINK#0 form_control::@37/(signed byte) form_cursor_count#5 ) [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
[52] if((signed byte) form_cursor_count#15>=(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2) goto form_control::@2 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
to:form_control::@15
form_control::@15: scope:[form_control] from form_control::@1
to:form_control::@17
form_control::@17: scope:[form_control] from form_control::@1
[53] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] )
[54] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
to:form_control::@3
form_control::@3: scope:[form_control] from form_control::@15 form_control::@2
form_control::@3: scope:[form_control] from form_control::@17 form_control::@2
[55] phi() [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
[56] call keyboard_key_pressed param-assignment [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#0 ] )
[57] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#2 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#2 ] )
to:form_control::@29
form_control::@29: scope:[form_control] from form_control::@3
to:form_control::@33
form_control::@33: scope:[form_control] from form_control::@3
[58] (byte) form_control::key_down#0 ← (byte) keyboard_key_pressed::return#2 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::key_down#0 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::key_down#0 ] )
[59] if((byte) form_control::key_down#0==(byte) key_down_debounce#11) goto form_control::@4 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::key_down#0 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::key_down#0 ] )
to:form_control::@17
form_control::@17: scope:[form_control] from form_control::@29
to:form_control::@19
form_control::@19: scope:[form_control] from form_control::@33
[60] (byte) key_down_debounce#23 ← (byte) form_control::key_down#0 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::key_down#0 key_down_debounce#23 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::key_down#0 key_down_debounce#23 ] )
[61] if((byte) form_control::key_down#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@4 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#23 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#23 ] )
to:form_control::@18
form_control::@18: scope:[form_control] from form_control::@17
to:form_control::@20
form_control::@20: scope:[form_control] from form_control::@19
[62] (byte~) form_control::$13 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] )
[63] *((byte*) form_control::field#0) ← (byte~) form_control::$13 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] )
[64] call keyboard_key_pressed param-assignment [ form_field_idx#14 key_right_debounce#11 keyboard_key_pressed::return#0 key_down_debounce#23 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 keyboard_key_pressed::return#0 key_down_debounce#23 ] )
[65] (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#0 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#4 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#4 ] )
to:form_control::@31
form_control::@31: scope:[form_control] from form_control::@18
to:form_control::@35
form_control::@35: scope:[form_control] from form_control::@20
[66] (byte~) form_control::$14 ← (byte) keyboard_key_pressed::return#4 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 form_control::$14 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 form_control::$14 ] )
[67] if((byte~) form_control::$14!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@6 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] )
to:form_control::@19
form_control::@19: scope:[form_control] from form_control::@31
[68] (byte) form_field_idx#37 ← ++ (byte) form_field_idx#14 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#37 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#37 ] )
[69] if((byte) form_field_idx#37!=(const byte) form_fields_cnt#0) goto form_control::@34 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#37 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#37 ] )
to:form_control::@21
form_control::@21: scope:[form_control] from form_control::@35
[68] (byte) form_field_idx#41 ← ++ (byte) form_field_idx#14 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] )
[69] if((byte) form_field_idx#41!=(const byte) form_fields_cnt#0) goto form_control::@38 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] )
to:form_control::@8
form_control::@8: scope:[form_control] from form_control::@19 form_control::@34 form_control::@35 form_control::@6
[70] (byte) form_field_idx#30 ← phi( form_control::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 form_control::@6/(const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 form_control::@34/(byte) form_field_idx#37 form_control::@35/(byte) form_field_idx#38 ) [ key_right_debounce#11 key_down_debounce#23 form_field_idx#30 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#30 ] )
form_control::@8: scope:[form_control] from form_control::@21 form_control::@38 form_control::@39 form_control::@6
[70] (byte) form_field_idx#32 ← phi( form_control::@21/(byte/signed byte/word/signed word/dword/signed dword) 0 form_control::@6/(const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 form_control::@38/(byte) form_field_idx#41 form_control::@39/(byte) form_field_idx#42 ) [ key_right_debounce#11 key_down_debounce#23 form_field_idx#32 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#32 ] )
to:form_control::@return
form_control::@return: scope:[form_control] from form_control::@13 form_control::@24 form_control::@30 form_control::@8
[71] (byte) key_right_debounce#13 ← phi( form_control::@30/(byte) key_right_debounce#11 form_control::@24/(byte) key_right_debounce#21 form_control::@13/(byte) key_right_debounce#21 form_control::@8/(byte) key_right_debounce#11 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
[71] (byte) form_field_idx#18 ← phi( form_control::@30/(byte) form_field_idx#14 form_control::@24/(byte) form_field_idx#14 form_control::@13/(byte) form_field_idx#14 form_control::@8/(byte) form_field_idx#30 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
[71] (byte) key_down_debounce#13 ← phi( form_control::@30/(byte) key_down_debounce#20 form_control::@24/(byte) key_down_debounce#20 form_control::@13/(byte) key_down_debounce#20 form_control::@8/(byte) key_down_debounce#23 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
[71] (signed byte) form_cursor_count#16 ← phi( form_control::@30/(signed byte) form_cursor_count#15 form_control::@24/(signed byte) form_cursor_count#15 form_control::@13/(signed byte) form_cursor_count#15 form_control::@8/(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
form_control::@return: scope:[form_control] from form_control::@14 form_control::@26 form_control::@34 form_control::@8
[71] (byte) key_right_debounce#13 ← phi( form_control::@34/(byte) key_right_debounce#11 form_control::@26/(byte) key_right_debounce#21 form_control::@14/(byte) key_right_debounce#21 form_control::@8/(byte) key_right_debounce#11 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
[71] (byte) form_field_idx#18 ← phi( form_control::@34/(byte) form_field_idx#14 form_control::@26/(byte) form_field_idx#14 form_control::@14/(byte) form_field_idx#14 form_control::@8/(byte) form_field_idx#32 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
[71] (byte) key_down_debounce#13 ← phi( form_control::@34/(byte) key_down_debounce#20 form_control::@26/(byte) key_down_debounce#20 form_control::@14/(byte) key_down_debounce#20 form_control::@8/(byte) key_down_debounce#23 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
[71] (signed byte) form_cursor_count#16 ← phi( form_control::@34/(signed byte) form_cursor_count#15 form_control::@26/(signed byte) form_cursor_count#15 form_control::@14/(signed byte) form_cursor_count#15 form_control::@8/(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 ) [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
[72] return [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:44 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
to:@return
form_control::@34: scope:[form_control] from form_control::@19
[73] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#37 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#37 ] )
form_control::@38: scope:[form_control] from form_control::@21
[73] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] )
to:form_control::@8
form_control::@6: scope:[form_control] from form_control::@31
[74] (byte) form_field_idx#38 ← -- (byte) form_field_idx#14 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#38 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#38 ] )
[75] if((byte) form_field_idx#38!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@35 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#38 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#38 ] )
form_control::@6: scope:[form_control] from form_control::@35
[74] (byte) form_field_idx#42 ← -- (byte) form_field_idx#14 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] )
[75] if((byte) form_field_idx#42!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@39 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] )
to:form_control::@8
form_control::@35: scope:[form_control] from form_control::@6
[76] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#38 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#38 ] )
form_control::@39: scope:[form_control] from form_control::@6
[76] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ( main:2::menu:10::form_control:44 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] )
to:form_control::@8
form_control::@4: scope:[form_control] from form_control::@17 form_control::@29
[77] (byte) key_down_debounce#20 ← phi( form_control::@29/(byte) key_down_debounce#11 form_control::@17/(byte) key_down_debounce#23 ) [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 ] )
form_control::@4: scope:[form_control] from form_control::@19 form_control::@33
[77] (byte) key_down_debounce#20 ← phi( form_control::@33/(byte) key_down_debounce#11 form_control::@19/(byte) key_down_debounce#23 ) [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 ] )
[78] call keyboard_key_pressed param-assignment [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#0 key_down_debounce#20 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#0 key_down_debounce#20 ] )
[79] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#3 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#3 ] )
to:form_control::@30
form_control::@30: scope:[form_control] from form_control::@4
to:form_control::@34
form_control::@34: scope:[form_control] from form_control::@4
[80] (byte) form_control::key_right#0 ← (byte) keyboard_key_pressed::return#3 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 form_control::key_right#0 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 form_control::key_right#0 ] )
[81] if((byte) form_control::key_right#0==(byte) key_right_debounce#11) goto form_control::@return [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 form_control::key_right#0 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 form_control::key_right#0 ] )
to:form_control::@24
form_control::@24: scope:[form_control] from form_control::@30
to:form_control::@26
form_control::@26: scope:[form_control] from form_control::@34
[82] (byte) key_right_debounce#21 ← (byte) form_control::key_right#0 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::key_right#0 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::key_right#0 ] )
[83] if((byte) form_control::key_right#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@return [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@25
form_control::@25: scope:[form_control] from form_control::@24
to:form_control::@27
form_control::@27: scope:[form_control] from form_control::@26
[84] phi() [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
[85] call keyboard_key_pressed param-assignment [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#0 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::return#0 key_down_debounce#20 key_right_debounce#21 ] )
[86] (byte) keyboard_key_pressed::return#10 ← (byte) keyboard_key_pressed::return#0 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#10 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#10 ] )
to:form_control::@32
form_control::@32: scope:[form_control] from form_control::@25
to:form_control::@36
form_control::@36: scope:[form_control] from form_control::@27
[87] (byte~) form_control::$28 ← (byte) keyboard_key_pressed::return#10 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$28 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$28 ] )
[88] if((byte~) form_control::$28!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@12 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@26
form_control::@26: scope:[form_control] from form_control::@32
[89] (byte/signed word/word/dword/signed dword~) form_control::$31 ← *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) + (byte/signed byte/word/signed word/dword/signed dword) 1 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$31 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$31 ] )
[90] (byte/word/dword~) form_control::$32 ← (byte/signed word/word/dword/signed dword~) form_control::$31 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$32 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$32 ] )
[91] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) ← (byte/word/dword~) form_control::$32 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@13
form_control::@13: scope:[form_control] from form_control::@12 form_control::@26
to:form_control::@28
form_control::@28: scope:[form_control] from form_control::@36
[89] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
[90] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#14)) goto form_control::@14 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@29
form_control::@29: scope:[form_control] from form_control::@28
[91] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@14
form_control::@14: scope:[form_control] from form_control::@12 form_control::@28 form_control::@29 form_control::@31
[92] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)) [ form_field_idx#14 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@return
form_control::@12: scope:[form_control] from form_control::@32
[93] (byte/signed word/word/dword/signed dword~) form_control::$33 ← *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) - (byte/signed byte/word/signed word/dword/signed dword) 1 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$33 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$33 ] )
[94] (byte/word/dword~) form_control::$34 ← (byte/signed word/word/dword/signed dword~) form_control::$33 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$34 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$34 ] )
[95] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) ← (byte/word/dword~) form_control::$34 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@13
form_control::@12: scope:[form_control] from form_control::@36
[93] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) ← -- *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
[94] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@14 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@31
form_control::@31: scope:[form_control] from form_control::@12
[95] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#14) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#14) [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ( main:2::menu:10::form_control:44 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
to:form_control::@14
form_control::@2: scope:[form_control] from form_control::@1
[96] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] )
[97] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
to:form_control::@3
form_control::@33: scope:[form_control] from form_control::@28
form_control::@37: scope:[form_control] from form_control::@32
[98] phi() [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:44 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
to:form_control::@1
keyboard_key_pressed: scope:[keyboard_key_pressed] from form_control::@18 form_control::@25 form_control::@3 form_control::@4
[99] (byte) keyboard_key_pressed::key#4 ← phi( form_control::@18/(const byte) KEY_RSHIFT#0 form_control::@25/(const byte) KEY_RSHIFT#0 form_control::@3/(const byte) KEY_CRSR_DOWN#0 form_control::@4/(const byte) KEY_CRSR_RIGHT#0 ) [ keyboard_key_pressed::key#4 ] ( main:2::menu:10::form_control:44::keyboard_key_pressed:56 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:44::keyboard_key_pressed:64 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:44::keyboard_key_pressed:78 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:44::keyboard_key_pressed:85 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::key#4 ] )
keyboard_key_pressed: scope:[keyboard_key_pressed] from form_control::@20 form_control::@27 form_control::@3 form_control::@4
[99] (byte) keyboard_key_pressed::key#4 ← phi( form_control::@20/(const byte) KEY_RSHIFT#0 form_control::@27/(const byte) KEY_RSHIFT#0 form_control::@3/(const byte) KEY_CRSR_DOWN#0 form_control::@4/(const byte) KEY_CRSR_RIGHT#0 ) [ keyboard_key_pressed::key#4 ] ( main:2::menu:10::form_control:44::keyboard_key_pressed:56 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:44::keyboard_key_pressed:64 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:44::keyboard_key_pressed:78 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:44::keyboard_key_pressed:85 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::key#4 ] )
[100] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] ( main:2::menu:10::form_control:44::keyboard_key_pressed:56 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:64 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:78 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:85 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] )
[101] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:10::form_control:44::keyboard_key_pressed:56 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:64 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:78 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:85 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] )
[102] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::rowid#0 ] ( main:2::menu:10::form_control:44::keyboard_key_pressed:56 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 keyboard_key_pressed::colidx#0 keyboard_matrix_read::rowid#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:64 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::rowid#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:78 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::rowid#0 ] main:2::menu:10::form_control:44::keyboard_key_pressed:85 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::colidx#0 keyboard_matrix_read::rowid#0 ] )

View File

@ -63,38 +63,36 @@
(byte~) form_control::$13 reg byte a 4.0
(byte~) form_control::$14 reg byte a 4.0
(byte~) form_control::$28 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) form_control::$31 reg byte a 4.0
(byte/word/dword~) form_control::$32 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) form_control::$33 reg byte a 4.0
(byte/word/dword~) form_control::$34 reg byte a 4.0
(byte/word/dword~) form_control::$6 reg byte a 4.0
(byte~) form_control::$7 reg byte a 4.0
(label) form_control::@1
(label) form_control::@12
(label) form_control::@13
(label) form_control::@15
(label) form_control::@14
(label) form_control::@17
(label) form_control::@18
(label) form_control::@19
(label) form_control::@2
(label) form_control::@24
(label) form_control::@25
(label) form_control::@20
(label) form_control::@21
(label) form_control::@26
(label) form_control::@27
(label) form_control::@28
(label) form_control::@29
(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::@6
(label) form_control::@8
(label) form_control::@return
(byte*) form_control::field
(byte*) form_control::field#0 field zp ZP_WORD:5 0.44444444444444453
(byte*) form_control::field#0 field zp ZP_WORD:6 0.44444444444444453
(byte) form_control::key_down
(byte) form_control::key_down#0 reg byte a 2.6666666666666665
(byte) form_control::key_right
@ -106,31 +104,33 @@
(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:2 35.66666666666666
(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:2 2.0
(byte) form_field_idx
(byte) form_field_idx#1 reg byte x 0.41935483870967744
(byte) form_field_idx#14 reg byte x 2.666666666666665
(byte) form_field_idx#18 reg byte x 36.33333333333332
(byte) form_field_idx#30 reg byte x 6.0
(byte) form_field_idx#37 reg byte x 2.0
(byte) form_field_idx#38 reg byte x 2.0
(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:4 0.41935483870967744
(byte) form_field_idx#14 form_field_idx zp ZP_BYTE:4 2.901960784313723
(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:4 36.33333333333332
(byte) form_field_idx#32 form_field_idx zp ZP_BYTE:4 6.0
(byte) form_field_idx#41 form_field_idx zp ZP_BYTE:4 2.0
(byte) form_field_idx#42 form_field_idx zp ZP_BYTE:4 2.0
(byte*()) form_field_ptr((byte) form_field_ptr::field_idx)
(word~) form_field_ptr::$2 $2 zp ZP_WORD:5 1.0
(word~) form_field_ptr::$2 $2 zp ZP_WORD:6 1.0
(label) form_field_ptr::@return
(byte*) form_field_ptr::field
(byte) form_field_ptr::field_idx
(byte) form_field_ptr::field_idx#0 field_idx zp ZP_BYTE:7 202.0
(byte) form_field_ptr::field_idx#1 field_idx zp ZP_BYTE:7 4.0
(byte) form_field_ptr::field_idx#2 field_idx zp ZP_BYTE:7 35.66666666666666
(byte) form_field_ptr::field_idx#0 reg byte x 202.0
(byte) form_field_ptr::field_idx#1 reg byte x 4.0
(byte) form_field_ptr::field_idx#2 reg byte x 35.66666666666666
(byte*) form_field_ptr::line
(byte*) form_field_ptr::return
(byte*) form_field_ptr::return#0 return zp ZP_WORD:5 26.25
(byte*) form_field_ptr::return#2 return zp ZP_WORD:5 202.0
(byte*) form_field_ptr::return#3 return zp ZP_WORD:5 4.0
(byte*) form_field_ptr::return#0 return zp ZP_WORD:6 26.25
(byte*) form_field_ptr::return#2 return zp ZP_WORD:6 202.0
(byte*) form_field_ptr::return#3 return zp ZP_WORD:6 4.0
(byte) form_field_ptr::x
(byte) form_field_ptr::x#0 reg byte a 4.0
(byte) form_field_ptr::y
(byte) form_field_ptr::y#0 reg byte a 6.0
(byte) form_field_ptr::y#0 reg byte y 6.0
(byte) form_fields_cnt
(const byte) form_fields_cnt#0 form_fields_cnt = (byte/signed byte/word/signed word/dword/signed dword) 9
(byte[]) form_fields_max
(const byte[]) form_fields_max#0 form_fields_max = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1 }
(byte[]) form_fields_val
(const byte[]) form_fields_val#0 form_fields_val = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte[]) form_fields_x
@ -146,22 +146,22 @@
(label) form_render_values::@3
(label) form_render_values::@return
(byte*) form_render_values::field
(byte*) form_render_values::field#0 field zp ZP_WORD:5 202.0
(byte*) form_render_values::field#0 field zp ZP_WORD:6 202.0
(byte) form_render_values::idx
(byte) form_render_values::idx#1 idx zp ZP_BYTE:7 151.5
(byte) form_render_values::idx#2 idx zp ZP_BYTE:7 67.33333333333333
(byte) form_render_values::idx#1 reg byte x 151.5
(byte) form_render_values::idx#2 reg byte x 67.33333333333333
(void()) form_set_screen((byte*) form_set_screen::screen)
(byte~) form_set_screen::$0 reg byte a 202.0
(byte~) form_set_screen::$1 reg byte a 202.0
(label) form_set_screen::@1
(label) form_set_screen::@return
(byte*) form_set_screen::line
(byte*) form_set_screen::line#1 line zp ZP_WORD:5 67.33333333333333
(byte*) form_set_screen::line#2 line zp ZP_WORD:5 80.8
(byte*) form_set_screen::line#1 line zp ZP_WORD:6 67.33333333333333
(byte*) form_set_screen::line#2 line zp ZP_WORD:6 80.8
(byte*) form_set_screen::screen
(byte) form_set_screen::y
(byte) form_set_screen::y#1 reg byte y 151.5
(byte) form_set_screen::y#2 reg byte y 67.33333333333333
(byte) form_set_screen::y#1 reg byte x 151.5
(byte) form_set_screen::y#2 reg byte x 67.33333333333333
(byte) key_down_debounce
(byte) key_down_debounce#1 key_down_debounce zp ZP_BYTE:3 0.41935483870967744
(byte) key_down_debounce#11 key_down_debounce zp ZP_BYTE:3 4.916666666666666
@ -169,18 +169,18 @@
(byte) key_down_debounce#20 key_down_debounce zp ZP_BYTE:3 0.5263157894736842
(byte) key_down_debounce#23 key_down_debounce zp ZP_BYTE:3 0.4
(byte) key_right_debounce
(byte) key_right_debounce#1 key_right_debounce zp ZP_BYTE:4 0.41935483870967744
(byte) key_right_debounce#11 key_right_debounce zp ZP_BYTE:4 2.727272727272727
(byte) key_right_debounce#13 key_right_debounce zp ZP_BYTE:4 36.33333333333332
(byte) key_right_debounce#21 key_right_debounce zp ZP_BYTE:4 0.42857142857142855
(byte) key_right_debounce#1 key_right_debounce zp ZP_BYTE:5 0.41935483870967744
(byte) key_right_debounce#11 key_right_debounce zp ZP_BYTE:5 2.727272727272727
(byte) key_right_debounce#13 key_right_debounce zp ZP_BYTE:5 36.33333333333332
(byte) key_right_debounce#21 key_right_debounce zp ZP_BYTE:5 0.42857142857142855
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
(label) keyboard_key_pressed::@2
(label) keyboard_key_pressed::@return
(byte) keyboard_key_pressed::colidx
(byte) keyboard_key_pressed::colidx#0 colidx zp ZP_BYTE:7 0.6666666666666666
(byte) keyboard_key_pressed::colidx#0 reg byte y 0.6666666666666666
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::key#4 reg byte y 2.0
(byte) keyboard_key_pressed::key#4 reg byte x 2.0
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::return#0 reg byte a 1.6666666666666665
(byte) keyboard_key_pressed::return#10 reg byte a 4.0
@ -198,7 +198,7 @@
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.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 }
(void()) main()
@ -222,11 +222,11 @@
(byte*) menu::SCREEN
(const byte*) menu::SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 32768
(byte*) menu::c
(byte*) menu::c#1 c zp ZP_WORD:5 151.5
(byte*) menu::c#2 c zp ZP_WORD:5 151.5
(byte*) menu::c#1 c zp ZP_WORD:6 151.5
(byte*) menu::c#2 c zp ZP_WORD:6 151.5
(byte) menu::i
(byte) menu::i#1 reg byte y 151.5
(byte) menu::i#2 reg byte y 202.0
(byte) menu::i#1 reg byte x 151.5
(byte) menu::i#2 reg byte x 202.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:8 2002.0
(byte*) print_char_cursor#17 print_char_cursor zp ZP_WORD:8 821.0
@ -237,8 +237,8 @@
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:5 151.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:5 151.5
(byte*) print_cls::sc#1 sc zp ZP_WORD:6 151.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:6 151.5
(byte[]) print_hextab
(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
@ -262,19 +262,20 @@
(byte) print_str_lines::ch
(byte) print_str_lines::ch#0 reg byte a 667.3333333333334
(byte*) print_str_lines::str
(byte*) print_str_lines::str#0 str zp ZP_WORD:5 233.66666666666669
(byte*) print_str_lines::str#2 str zp ZP_WORD:5 151.5
(byte*) print_str_lines::str#3 str zp ZP_WORD:5 1552.0
(byte*) print_str_lines::str#0 str zp ZP_WORD:6 233.66666666666669
(byte*) print_str_lines::str#2 str zp ZP_WORD:6 151.5
(byte*) print_str_lines::str#3 str zp ZP_WORD:6 1552.0
zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
reg byte x [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#37 form_field_idx#38 ]
zp ZP_BYTE:4 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
reg byte y [ menu::i#2 menu::i#1 ]
zp ZP_WORD:5 [ menu::c#2 menu::c#1 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 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 y [ keyboard_key_pressed::key#4 ]
zp ZP_BYTE:7 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 form_render_values::idx#2 form_render_values::idx#1 keyboard_key_pressed::colidx#0 ]
reg byte y [ form_set_screen::y#2 form_set_screen::y#1 ]
zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#32 form_field_idx#41 form_field_idx#42 ]
zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
reg byte x [ menu::i#2 menu::i#1 ]
zp ZP_WORD:6 [ menu::c#2 menu::c#1 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 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 [ keyboard_key_pressed::key#4 ]
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 ]
reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ]
zp ZP_WORD:8 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#59 print_char_cursor#32 print_char_cursor#1 ]
zp ZP_WORD:10 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ]
reg byte a [ form_control::$6 ]
@ -287,18 +288,15 @@ reg byte a [ keyboard_key_pressed::return#3 ]
reg byte a [ form_control::key_right#0 ]
reg byte a [ keyboard_key_pressed::return#10 ]
reg byte a [ form_control::$28 ]
reg byte a [ form_control::$31 ]
reg byte a [ form_control::$32 ]
reg byte a [ form_control::$33 ]
reg byte a [ form_control::$34 ]
reg byte a [ form_control::$7 ]
reg byte y [ keyboard_key_pressed::colidx#0 ]
reg byte a [ keyboard_key_pressed::rowidx#0 ]
reg byte y [ keyboard_matrix_read::rowid#0 ]
reg byte x [ keyboard_matrix_read::rowid#0 ]
reg byte a [ keyboard_matrix_read::return#2 ]
reg byte a [ keyboard_key_pressed::$2 ]
reg byte a [ keyboard_key_pressed::return#0 ]
reg byte a [ keyboard_matrix_read::return#0 ]
reg byte a [ form_field_ptr::y#0 ]
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 ]